Notable Breakpoints: Difference between revisions
Jump to navigation
Jump to search
(→Pokémon BW (U): sorted again ffs) |
|||
Line 346: | Line 346: | ||
!RAM Address | !RAM Address | ||
!Description | !Description | ||
!Discovered by | !Discovered by | ||
|-style="background: #eee;" align="center" | |||
|01FF8000 | |||
|ITCM start | |||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |||
|01FF80F0 | |||
|ARM9 IRQ Handler | |||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |-style="background: #eee;" align="center" | ||
|020056EC | |020056EC | ||
Line 366: | Line 374: | ||
|02018788 | |02018788 | ||
|Shiny prevention routine | |Shiny prevention routine | ||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |||
|02019A6C | |||
|PKM + RAM encryption | |||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |||
|02035F50 | |||
|New (NDS-only) input handler | |||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |||
|02035F94 | |||
|GBA-equivalent input handler | |||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |||
|0203EFE0 | |||
|memcmp()- memory compare: 2 pointers and length of comparison(in bytes)) | |||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |||
|0203F04C | |||
|Set init MT seed (seed = init rng >> 32) | |||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |||
|0203F078 | |||
|ARNG(same as gen 4)- build initial MT seed table | |||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |||
|0203F0C0 | |||
|Mersenne Twister seed table builder | |||
|[[Bond697]] | |[[Bond697]] | ||
|-style="background: #eee;" align="center" | |-style="background: #eee;" align="center" | ||
Line 371: | Line 407: | ||
|Initial Seed Creation Routine | |Initial Seed Creation Routine | ||
|[[OmegaDonut]] | |[[OmegaDonut]] | ||
|-style="background: #eee;" align="center" | |||
|0207FD4C | |||
|VRAM bank control handler | |||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |||
|0203F374 | |||
|.sav encryption | |||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |-style="background: #eee;" align="center" | ||
|02085D54 | |02085D54 | ||
Line 382: | Line 426: | ||
|0209C2C8 | |0209C2C8 | ||
|Unsigned divmod- r0/r1, result in r0; r0%r1, result in r1 | |Unsigned divmod- r0/r1, result in r0; r0%r1, result in r1 | ||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |||
|020946AC | |||
|ARNG2(unused)- not a breakpoint, but notable nonetheless.. | |||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |||
|020AA1C4 | |||
|RNG state pointer | |||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |||
|02146A18 | |||
|Mersenne Twister seed table pointer | |||
|[[Bond697]] | |[[Bond697]] | ||
|-style="background: #eee;" align="center" | |-style="background: #eee;" align="center" | ||
Line 403: | Line 459: | ||
|Opponent accuracy | |Opponent accuracy | ||
|[[arcee]] | |[[arcee]] | ||
|-style="background: #eee;" align="center" | |||
|021C0A6C | |||
|Battle routine(setup) | |||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |-style="background: #eee;" align="center" | ||
|021C2466 | |021C2466 | ||
|Status infliction | |Status infliction | ||
|[[arcee]] | |[[arcee]] | ||
|-style="background: #eee;" align="center" | |||
|021C6C18 | |||
|Damage formula | |||
|[[arcee]], [[Bond697]] | |||
|-style="background: #eee;" align="center" | |-style="background: #eee;" align="center" | ||
|021F6388 | |021F6388 | ||
Line 422: | Line 486: | ||
|02216248 | |02216248 | ||
|PRNG state | |PRNG state | ||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |||
|0221BBD0 | |||
|Start of save data in RAM(when saving, all relevant data is written here, then cart RAM, then .sav) | |||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |||
|02250030 | |||
|Encounter slots in RAM | |||
|[[Bond697]] | |[[Bond697]] | ||
|-style="background: #eee;" align="center" | |-style="background: #eee;" align="center" | ||
Line 451: | Line 523: | ||
|Move Decision Dump (Wild Battle) | |Move Decision Dump (Wild Battle) | ||
|[[Kaphotics]] | |[[Kaphotics]] | ||
|-style="background: #eee;" align="center" | |||
|022BC734 | |||
|Are there trainers in White Forest? (bool) | |||
|[[Bond697]] | |||
|-style="background: #eee;" align="center" | |||
|0233F004 | |||
|Egg step counter | |||
|[[ToastPlusOne]] | |||
|-style="background: #eee;" align="center" | |-style="background: #eee;" align="center" | ||
|023FFC3C | |023FFC3C | ||
Line 459: | Line 539: | ||
|Date | |Date | ||
|[[OmegaDonut]] | |[[OmegaDonut]] | ||
|-style="background: #eee;" align="center" | |-style="background: #eee;" align="center" | ||
|02FE0000 | |02FE0000 | ||
|DTCM start | |DTCM start | ||
|[[Bond697]] | |[[Bond697]] | ||
|-style="background: #eee;" align="center" | |-style="background: #eee;" align="center" | ||
|037FBCEC | |037FBCEC | ||
|ARM7 IRQ Handler | |ARM7 IRQ Handler | ||
|[[Bond697]] | |[[Bond697]] | ||
|} | |} |
Revision as of 02:12, 3 September 2011
This page contains RAM addresses to various interesting and useful processes of GBA and DS Pokemon games.
Breakpoints can be set at these addresses.
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 |
---|---|---|---|
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 | |
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 |
---|---|---|
0201FD44 | PRNG advancement routine | Bond697 |
02061E2A | NPC movement | arcee |
020F2998 | Signed divmod() | ? |
020F2BA4 | Unsigned divmod() | ? |
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 |
022483C4 | Partial encounter calc- roamer modifier | arcee |
0210F6CC | Mersenne Twister lookup table counter | Bond697 |
021D15AC | Mersenne Twister lookup table | Bond697 |
Pokémon BW (J)
RAM Address | Description | Discovered by |
---|---|---|
022151D4 | Mersenne Twister Lookup Table | OmegaDonut |
02215B94 | Mersenne Twister Lookup Table Counter | Kaphotics |
022160A8 | PRNG | Kazo |
023FFC3C | Delay | OmegaDonut |
023FFDE8 | Date | OmegaDonut |
(All offsets are White offsets. Black offsets are White offset minus 0x20)
Pokémon BW (U)
RAM Address | Description | Discovered by |
---|---|---|
01FF8000 | ITCM start | Bond697 |
01FF80F0 | ARM9 IRQ Handler | Bond697 |
020056EC | PRNG advancement routine 1 | Bond697 |
02005728 | PRNG advancement routine 2 | 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 |
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 builder | Bond697 |
0203F270 | Initial Seed Creation Routine | OmegaDonut |
0207FD4C | VRAM bank control handler | Bond697 |
0203F374 | .sav encryption | Bond697 |
02085D54 | DSi Detection Routine | chiizu |
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(unused)- not a breakpoint, but notable nonetheless.. | Bond697 |
020AA1C4 | RNG state pointer | Bond697 |
02146A18 | Mersenne Twister seed table pointer | Bond697 |
02193914 | White Forest Trainer # Counter- returns # of trainers in White Forest | Bond697 |
021A9DB2 | 0x80000000 OR PID decision routine | Bond697 |
021A9DF8 | Fishing decision | arcee |
021AA44C | White Forest Battle Decision Routine- return 0 if no battle, 1 if there's a battle | Bond697 |
021BFBD0 | Opponent accuracy | arcee |
021C0A6C | Battle routine(setup) | Bond697 |
021C2466 | Status infliction | arcee |
021C6C18 | Damage formula | arcee, Bond697 |
021F6388 | Battle PRNG | Kaphotics |
02215374 | Mersenne Twister Lookup Table | Bond697 |
02215D34 | Mersenne Twister Lookup Table Counter | Bond697 |
02216248 | PRNG state | Bond697 |
0221BBD0 | Start of save data in RAM(when saving, all relevant data is written here, then cart RAM, then .sav) | 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 |
023FFC3C | Delay | OmegaDonut |
023FFDE8 | Date | OmegaDonut |
02FE0000 | DTCM start | Bond697 |
037FBCEC | ARM7 IRQ Handler | Bond697 |
(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 | 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 | Frame counter | mingot |
03005D80 | PRNG | mingot |
080003A4 | Main loop | Bond697 |
080005E4 | Keypress handler | Bond697 |
08000758 | VBlank interrupt | Bond697 |
0806F5CC | PRNG advancement routine | mingot |
080B49E2 | Feebas setup routine on finding a Feebas tile | Bond697 |
082E7BE0 | Modulus routine- r0 % r1, return result in r0 | Bond697 |
08000248 | IRQ setup | 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 |
08000988 | Memblock header setup | Bond697 |
08000B1C | Define memblock | Bond697 |
08000B38 | Declare memblock(malloc()?) | Bond697 |
03002750 | IRQ handler(user mode) | Bond697 |
Pokémon Ruby/Sapphire (U)
RAM Address | Description | Discovered by |
---|---|---|
02024D1C | Quick Claw Determination | FractalFusion |
020287E4 | Egg Creation Step Counter | Kaphotics |
03004818 | PRNG | 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 |
Pokémon Fire Red/Leaf Green (U)
RAM Address | Description | Discovered by |
---|---|---|
02020000 | Timer1 storage on initial seed creation | flovv, Bond697 |
03005000 | PRNG | 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 |