Notable Breakpoints
(Difference between revisions) (→Pokémon HGSS (U)) |
m (→Pokémon HGSS (U)) |
||
| Line 354: | Line 354: | ||
|022477C0 | |022477C0 | ||
|Headbutt tree encounter slots (Post-National Dex) | |Headbutt tree encounter slots (Post-National Dex) | ||
| - | |[[ | + | |[[magical]] |
|-style="background: #eee;" align="center" | |-style="background: #eee;" align="center" | ||
|022483C4 | |022483C4 | ||
Revision as of 01:52, 27 March 2012
This page contains RAM addresses to various interesting and useful processes of GBA and DS Pokemon games.
Breakpoints can be set at these addresses.
Contents |
Inspiration
This page is inspired by tsanth's thread with the same name on GameFAQs: [1]
Pokemon DPP (U)
| DP RAM Address | Pl RAM Address | Description | Discovered by |
|---|---|---|---|
| 02000C54 | 02000C88 | Main() | Bond697 |
| 02000FB0 | 02001034 | Begin Seed Calculation Routine | mingot, arcee |
| 0201B9E0 | 0201D2DC | Set PRNG seed | mingot, arcee |
| 0201B9EC | 0201D2E8 | PRNG | loadingNOW, tsanth |
| 0201BA10 | 0201D30C | Alternate RNG used in some cases: Examples, PID generation for mystery gift pokemon, recalculating a PID after a failed shiny check, number which determines swarm pokemon and great marsh pokemon | SCV |
| 0201BA1C | 0201D318 | Set IRNG Seed | mingot, arcee |
| 02038B70 | 0203E778 | Script Handler | loadingNOW |
| 0203E7D2 | Loads address for a command then branches to that address | SCV | |
| 02042FB4 | 0204BAFC | ARNG call for PID of Wondercard pokemon | SCV, arcee |
| 02042FBA | 0204BB02 | Loads PID from wondercard to r0 | SCV, arcee |
| 02042FC8 | 0204BB10 | First Shiny Check call during the generation of some wondercard pokemon | SCV, arcee |
| 02042FD0 | 0204BB18 | Beginning of loop that makes sure you do not get a shiny wondercard pokemon (in some cases) | SCV, arcee |
| 0204305E | 0204BBA6 | PRNG call for first set of Wondercard pokemon IVs | tsanth, arcee |
| 0204309C | 0204BBE4 | PRNG call for second set of Wondercard pokemon IVs | tsanth, arcee |
| 0205DED4 | Create chain set (not sure about address in tsanth's thread it said 205DED | tsanth, loadingNOW | |
| 0205DF42 | End of Create chain set routine | tsanth, loadingNOW | |
| 0205E40C | 02069B00 | Pokeradar Routine | loadingNOW, tsanth, arcee |
| 02068AAC | 02075E38 | Shiny Check, used to decide what sprite to show for a pokemon and to make sure dynamic PID mystery gift pokemon are not shiny as well as preventing manaphy from hatching shiny in some cases. | SCV, arcee |
| 02075C86 | 128 step RNG advancement | arcee | |
| 0207760E | Poketch check @ daycare screen | arcee | |
| 0206A90C | 02078780 | Begin Calculation of Pokemon ID for alternate forms. | SCV, arcee |
| 020EBC80 | 020E1F6C | Division routine; R0= R0 / R1, R1=R0%R1 | tsanth, SCV |
| 020EAC58 | Pointer to Begin Routine for Script Command 0000 | SCV | |
| 020EB974 | Pointer to Begin Routine for Script Command 0347 | SCV | |
| 021C4D48 | 021BFB14 | PRNG State | Kazo |
| 021C4D4C | 021BFB18 | Mersenne Twister Lookup Table | Kazo |
| 021F4DA8 | Beginning of Honey Tree Routine | SCV | |
| 021F4EE4 | Determines a value from 0-3 to use to determine which list will be used and how the shake value is calculated. If 0, slathering fails and not pokemon will show up. | SCV | |
| 021F4F44 | Determines a number from 0-5 that represents which pokemon will be encountered in a honey tree. | SCV | |
| 021F4F98 | Determines which list will be used by (value determined by 021F4EE4) - 1 (its not done this way, but is equivalent) | SCV | |
| 021F4FAC | Determines a number from 0-3 that represents how much a Honey Tree will shake | SCV | |
| 021F5138 | 021EFF4C | Returns 1 if the current tree being slathered is a Munchlax Tree and 0 otherwise. | SCV |
| 02211E60 | Set GRNG seed | magical | |
| 02211E70 | GRNG | magical | |
| 0223BA10 | Movement Handler Start | tsanth | |
| 0223BA46 | "Am I on grass?" check | tsanth | |
| 0223BAD4 | Wild Encounter Check | tsanth | |
| 0223BB2E | Pair-battle (NPC partner) check | tsanth | |
| 0223BD1C | Movement Handler END | tsanth | |
| 0223C1EE | 022377A2 | Pokeball catching routine | tsanth, arcee |
| 0223C5B8 | Start of Encounter Table Lookup Handler | mingot | |
| 0223C66A | Start of Water (Sweet Scent/Surfing) Encounter Table Lookup Handler | mingot | |
| 0223C6A0 | Start of Water (Fishing) Encounter Table Lookup Handler. There are 3 branches for each of the rods in this routine with different results for old and good/super. | mingot | |
| 022417F4 | Encounter- terrain check | arcee | |
| 02241848 | Encounter- motion mod | arcee | |
| 022479E6 | Call to get ID routine (result in r0) | SCV | |
| 0224E920 | Start of Frozen Handler | SCV |
0224190A - ESV calc 02241B28 - nature calc (probably)
Pokémon HGSS (U)
| RAM Address | Description | Discovered by |
|---|---|---|
| 02000CA4 | Main() | Bond697 |
| 0201FD44 | PRNG advancement routine | Bond697 |
| 0201FD68 | Alternate(simpler) PRNG | Bond697 |
| 0204BFF0 | Wondercard pokemon generation- full routine | Bond697 |
| 02061E2A | NPC movement | arcee |
| 02070068 | Shiny check | Bond697 |
| 020D3A38 | Disable slow IRQ | Bond697 |
| 020D3A4C | Enable slow IRQ | Bond697 |
| 020D34B0 | Make wondercard PID | Bond697 |
| 020F2998 | Signed divmod() | ? |
| 020F2BA4 | Unsigned divmod() | ? |
| 0210F6CC | Mersenne Twister lookup table counter | Bond697 |
| 021D15A8 | PRNG State | Kazo |
| 021D15AC | Mersenne Twister lookup table | Kazo |
| 021E19DC | Upper half of wondercard PID | Bond697 |
| 022440A0 | Pickup / Honey Gather handler | magical |
| 02246B24 | Start of Water (Fishing) Encounter Table Lookup Handler [2] | mingot |
| 02246FCC | Fishing decision | arcee |
| 02247228 | Pokéball catching routine | magical |
| 022475F2 | Partial encounter calc- movement modifier | arcee |
| 0224767A | Partial encounter calc- ability/item modifier | arcee |
| 02247698 | Encounter slots | arcee |
| 02247720 | Start of Water (Sweet Scent/Surfing) Encounter Table Lookup Handler [3] | mingot |
| 022477C0 | Headbutt tree encounter slots (Post-National Dex) | magical |
| 022483C4 | Partial encounter calc- roamer modifier | arcee |
| 0206C9D8 | International shiny PID generation | Bond697 |
| 02070068 | Shiny check | Bond697 |
Pokémon BW (U)
| RAM Address | Description | Discovered by |
|---|---|---|
| 01FF8000 | ITCM start | Bond697 |
| 01FF80F0 | ARM9 IRQ Handler | Bond697 |
| 02005124 | main() function- infinite main/busy loop that runs the game starts at 02005166 | Bond697 |
| 0200520C | VBlank handler function | Bond697 |
| 020056D0 | Set up both main RNGs for use | Bond697 |
| 020056EC | PRNG advancement routine 1 | Bond697 |
| 02005728 | PRNG advancement routine 2 | Bond697 |
| 0200852C | Store sidtid as uint | Bond697 |
| 0201778C | IV creation routine | Bond697 |
| 02017EF4 | Shiny check routine | Bond697 |
| 02018746 | PID type decision | Bond697 |
| 02018788 | Shiny prevention routine | Bond697 |
| 02019A6C | PKM + RAM encryption | Bond697 |
| 02035F50 | New (NDS-only) input handler | Bond697 |
| 02035F94 | GBA-equivalent input handler | Bond697 |
| 0203AE38 | C-Gear startup RNG interaction(reseed MT, encrypt, etc) | Bond697 |
| 0203EFE0 | memcmp()- memory compare: 2 pointers and length of comparison(in bytes)) | Bond697 |
| 0203F04C | Set init MT seed (seed = init rng >> 32) | Bond697 |
| 0203F078 | ARNG(same as gen 4)- build initial MT seed table | Bond697 |
| 0203F0C0 | Mersenne Twister seed table handler | Bond697 |
| 0203F270 | Initial Seed Creation Routine | OmegaDonut |
| 0203F374 | .sav encryption | Bond697 |
| 020592E8 | MD5 hashing routine for wifi | Bond697 |
| 0207FD4C | VRAM bank control handler | Bond697 |
| 02082BE4 | Takes 3 arguments: pointer to start of data write, length(in bytes) of data to write, uint to write multiple times- used constantly for clearing freed memory | Bond697 |
| 02082D5C | memcpy32()- accepts pointer to data start, pointer to copy start, and a length in bytes to copy | Bond697 |
| 02085D54 | DSi Detection Routine | chiizu |
| 02088E74 | Convert dec -> hex(mainly for RTC data, but usable for anything) | Bond697 |
| 02088A98 | Date/time switch statement- used to grab pieces of the date and time and convert them to hex | Bond697 |
| 0209C0C4 | Signed divmod- r0/r1, result in r0; r0%r1, result in r1 | Bond697 |
| 0209C2C8 | Unsigned divmod- r0/r1, result in r0; r0%r1, result in r1 | Bond697 |
| 020946AC | ARNG2 - This is used in the DS to DS handshake | XFR,Bond697 |
| 020A1B50 | Model/texture definitions/positioning data | Bond697 |
| 020AA1C4 | RNG state pointer | Bond697 |
| 02146292 | Pokemon to be encountered | Bond697 |
| 02146974 | Pointer to the struct for the current heap being used | Bond697 |
| 02146A18 | Mersenne Twister seed table pointer | Bond697 |
| 02150920 | SVC mode stack location for card reads/writes | Bond697 |
| 02151260 | SWI/SVC mode stack | Bond697 |
| 02193914 | White Forest Trainer # Counter- returns # of trainers in White Forest | Bond697 |
| 021A9370 | Pre-battle setup(battle test, etc) | Bond697 |
| 021A948C | Double battle test | Bond697 |
| 021AA43A | Battle test | Bond697 |
| 021A9DB2 | 0x80000000 OR PID decision routine | Bond697 |
| 021A9DE8 | ((rand() * 0xFFFF) >> 32) /0x290 -> function is called quite a bit for multiple calcs | Bond697 |
| 021A9DF8 | Fishing decision | arcee |
| 021AA700 | ((rand() * 0xFFFF) >> 32) /0x290 -> seems to only be used for battle tests | Bond697 |
| 021AA44C | White Forest Battle Decision Routine- return 0 if no battle, 1 if there's a battle | Bond697 |
| 021BC4F8 | Player setup on new game | Bond697 |
| 021BC50A | Make IDs | Bond697 |
| 021BFBD0 | Opponent accuracy | arcee |
| 021C0A6C | Battle routine(setup) | Bond697 |
| 021C2466 | Status infliction routine | arcee |
| 021C390C | Complete breeding routine | Bond697 |
| 021C4048 | International breeding PID generation | Bond697 |
| 021C6C18 | Damage formula routine | Bond697 |
| 021F6388 | Battle PRNG State | Kaphotics |
| 02215374 | Mersenne Twister Lookup Table | Bond697 |
| 02215D34 | Mersenne Twister Lookup Table Counter | Bond697 |
| 02216244 | PRNG State | Bond697 |
| 02168844 | rand(0xFFFFFFFF) / 0xFFFF | Bond697 |
| 02168A52 | ID generation for Battle Subway partner | Bond697 |
| 021763DC | Inside probability loop | Bond697 |
| 021763F8 | Probability routine- influences starting frame/seed | Bond697 |
| 02176444 | Outside probability loop | Bond697 |
| 02176C6C | Probability table | Bond697 |
| 0221BBD0 | Start of save data in RAM(when saving, all relevant data is written here, then cart RAM, then .sav) | Bond697 |
| 0223C9D0 | Daycare pokemon 1 | Bond697 |
| 0223CAB4 | Daycare pokemon 2 | Bond697 |
| 0223D8CC | BP Counter | Bond697 |
| 02250030 | Encounter slots in RAM | Bond697 |
| 02257030 | Step Counter | Bond697 |
| 02257034 | Shaking Patch Step Counter | Bond697 |
| 0226DC5A | Move Consecutive Use Counter (Wild Battle) | Kaphotics |
| 0226DC66 | Protect Consecutive Turn Counter (Wild Battle) | Kaphotics |
| 0226E70E | Move Consecutive Use Counter (Trainer Battle) | Kaphotics |
| 0226E71A | Protect Consecutive Turn Counter (Trainer Battle) | Kaphotics |
| 02274302 | Move Decision Dump (Wild Battle) | Kaphotics |
| 022BC734 | Are there trainers in White Forest? (bool) | Bond697 |
| 0233F004 | Egg step counter | ToastPlusOne |
| 02FE0000 | DTCM start | Bond697 |
| 02FE0020 | Interrupt handler lookup table | Bond697 |
| 02FE3780 | Main(user/system mode) stack start | Bond697 |
| 02FE3F80 | IRQ mode stack start | Bond697 |
| 02FE3FC0 | Supervisor mode stack start | Bond697 |
| 02FFFC3C | Vertical blank counter buffer | OmegaDonut |
| 02FFFDE8 | RTC buffer(char rtc[8]) | OmegaDonut |
| 037FBCEC | ARM7 IRQ Handler | Bond697 |
| 022394E0 | Date/time in hex - uint array | Bond697 |
| 021AA41C | Battle test/decision | Bond697 |
| 0224120C | Wifi RNG | Bond697 |
| 0203AE38 | Seed building routine for wifi RNG | Bond697 |
Pokémon BW (J)
| RAM Address | Description | Discovered by |
|---|---|---|
| 02005124 | Main() | Bond697 |
| 022151D4 | Mersenne Twister Lookup Table | OmegaDonut |
| 02215B94 | Mersenne Twister Lookup Table Counter | Kaphotics |
| 022160A8 | PRNG State | Kazo |
| 02FFFC3C | Delay | OmegaDonut |
| 02FFFDE8 | Date | OmegaDonut |
(All offsets are White offsets. Black offsets are White offset minus 0x20)
Pokémon Emerald (J)
| RAM Address | Description | Discovered by |
|---|---|---|
| 02024664 | Frame Counter | Kaphotics |
| 03005AE0 | PRNG State | Kaphotics |
| 0806F050 | PRNG Advancement Routine | Kaphotics |
| 080003A4 | Main loop | Bond697 |
| 080005E4 | Keypress handler | Bond697 |
| 08000758 | VBlank interrupt | Bond697 |
| 080B413A | Feebas setup routine on finding a Feebas tile | Bond697 |
| 08296518 | Modulus routine- r0 % r1, return result in r0 | Bond697 |
| 08000248 | IRQ setup | Bond697 |
Pokémon Emerald (U)
| RAM Address | Description | Discovered by |
|---|---|---|
| 02020000 | Timer1 storage on TID creation | Bond697 |
| 020249C0 | Main RNG Frame counter | mingot |
| 030022E0 | Timer PRNG Initial State (Egg PIDs) | Kaphotics |
| 03002750 | IRQ Handler (user mode) | Bond697 |
| 03005D80 | PRNG State | mingot |
| 03005D84 | Timer RNG Current Seed (Egg PIDs) | Kaphotics |
| 08000248 | IRQ setup | Bond697 |
| 080003A4 | Main loop | Bond697 |
| 080005E4 | Keypress handler | Bond697 |
| 08000738 | VBlank interrupt callback | Bond697 |
| 08000988 | Memblock header setup | Bond697 |
| 08000B1C | Malloc init | Bond697 |
| 08000B38 | Declare memblock(malloc()?) | Bond697 |
| 0806F5CC | PRNG Advancement Routine | mingot |
| 080B49E2 | Feebas setup routine on finding a Feebas tile | Bond697 |
| Start Method H | ||
| 080B5144 | Battle Test | Bond697 |
| 080B4AC8 | Encounter Slot | Bond697 |
| 080B4C74 | Set level | Bond697 |
| 080B4E2A | Sync (bool) | Bond697 |
| 080B4E4C | Nature Setup/Decision (skip if sync() == TRUE) | Bond697 |
| 08067E96 | PKM Building Routine (test temp PIDs, make IVs on success) | Bond697 |
| End Method H | ||
| 08067BF8 | Roamer creation start | Bond697 |
| 082E7BE0 | Modulus routine- r0 % r1, return result in r0 | Bond697 |
| 0817759E | ARNG | Bond697 |
| 0806D088 | Get nature from tempPID(pass tempPID as an arg, return nature value) | Bond697 |
| 03000DC0 | RTC array buffer(char rtc[8]) | Bond697 |
| 03000E20 | Directional movement counters(possibly per frame) | Bond697 |
Pokémon Ruby / Sapphire (U)
| RAM Address | Description | Discovered by |
|---|---|---|
| 02024D1C | Quick Claw Determination | FractalFusion |
| 020287E4 | Egg Creation Step Counter | Kaphotics |
| 03004818 | PRNG State | Multiple |
| 0800010C | IRQ setup/handler | Bond697 |
| 0800024C | Main loop | Bond697 |
| 08000428 | Keypress handler | Bond697 |
| 0803AADC | PID creation routine | Bond697 |
| 08084AA6 | Feebas decision | Bond697 |
| 081E0770 | Interrupts/SWIs | Bond697 |
| 080003E4 | Initial seed creation | Bond697 |
| 08040EA4 | Seed set routine, post creation | Bond697 |
| 08040E84 | rand() | Bond697 |
Pokémon FireRed / LeafGreen (U)
| RAM Address | Description | Discovered by |
|---|---|---|
| 02020000 | Timer1 storage on initial seed creation | flovv, Bond697 |
| 03005000 | PRNG State | Bond697 |
| 08000558 | Turn on Timer1 @ TM1CNT_H = 0x80 | Bond697 |
| 08000564 | Grab and return the value of Timer1 for use in seeding | Bond697 |
| 08000570 | Turn off Timer1 @ TM1CNT_H = 0x0 and store the grabbed value to 0x02020000 | Bond697 |
| 08044EC8 | PRNG Advancement Routine | Bond697 |
| 0803DA54 | Make PKM | Bond697 |
Pokémon Ruby Debug Version (G)
| RAM Address | Description | Discovered by |
|---|---|---|
| 08045324 | PRNG Advancement Routine(rand()) | Bond697 |
| 030048F8 | PRNG state | Bond697 |
| 08085CEC | ARNG Advancement Routine | Bond697 |
