123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- Even though the source code tells you how, Better use this here with the step-by-step
- for both supported verisons.
- Saving the new Block:
- Needed: Save_and_load.out, ROM to apply
- Common to both versions
- 1. Copy the contents to a free location in your ROM, 4 bytes aligned.
- Write down the location (called loc through this guide).
- For Emerald
- 2. At loc + 0x14, place the reverse pointer for the correct return address
- (ready to place should be 6d 27 15 08)
- 3. At loc + 0x48, place place the reverse pointer for the correct return address
- (ready to place should be Ad 20 2e 08)
- 4. At 0x15276a place 00 47
- 4.5 At 0x15279c place the reversed pointer (loc+0x1 in reverse)
- 5. At 0x152ea0 place 00 48 00 47 (loc+0x19 in reverse)
- For Fire Red
- 2. At 0x0d983a place 00 47
- 2.5 At 0x0d986c place the reversed pointer (loc+0x1 in reverse)
- 3. At 0x0D9EE4 place 00 48 00 47 (loc+0x19 in reverse)
- This will allow RAM 0x0203e000 to be saved to the Flash ROM.
- Not happy with the RAM Address? Know a better one? Then all you need to do is change
- (loc + 0x40) to the new RAM Address you wish to save.
- This second part fixes the Variables, according to this Rules:
- 0x4000-0x4fff are the old ones. Use with caution
- 0x5000-0x57ff == 0x5800-0x5fff The variables in the new RAM Area
- 0x6000-0x6fff are Byte-address to the above variables ([0x5000] = [0x6000] OR [0x6001]<<8)
- 0x7000-0x73ff are Word address to the above variables ([0x7000] = [0x5000] or [0x5001]<<10)
- 0x7400-0x7fff are useless, as non-variables.
- This part of the fix is to use that area as Variables. The first part saved the area for us
- to use, so you can simply write with the "WriteByteTooOffeset" command to use it as savable
- pool of data. If you wish to keep the old variable system intact, ignore this last part.
- "Fixing" the Variables:
- Needed: Var_decrypt.out, Var_loader.out, Var_store.out, ROM to apply
- Common to all ROMS
- 1. copy Var_decrypt.out content to a 4byte aligned free location (called loc_decrypt)
- 2. copy Var_loader.out content to a 4byte aligned free location (called loc_loader)
- 3. copy Var_store.out content to a 4byte aligned free location (called loc_store)
- For Emerald
- 4. at loc_decrypt + 0x44, place 9c 93
- 5. at 0x09D648 place 70 b5
- 5.2 at 0x09d64e place 0e 1c
- 5.4 at 0x09D682 place 10 47
- 5.6 at 0x09D688 place 70 bd
- 5.8 at 0x09D690 place (loc_decrypt+0x1 in reverse)
- 6. at 0x09d6a0 place 00 49 08 47 (loc_loader+0x1 in reverse)
- 7. at 0x09d6b0 30 b5 05 04 28 0c
- 7.5 at 0x09d6be 01 49 08 47 00 00 (loc_store+0x1 in reverse)
- For Fire Red
- 4. at 0x06e4f4 place 10 47
- 4.5 at 0x06e508 place (loc_decrypt+0x1 in reverse)
- 5. at 0x06e574 place 00 49 08 47 (loc_loader+0x1 in reverse)
- 6. at 0x06e584 30 b5 05 04 28 0c
- 6.5 at 0x06e592 01 49 08 47 00 00 (loc_store+0x1 in reverse)
- If, for some reason, you changed the RAM stored Address, fix it by placing the new address at
- (loc_decrypt + 0x48)
|