If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working at any time.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
Pokémon Mystery Dungeon: Red Rescue Team/Script Command Parsing Code
Jump to navigation
Jump to search
This is a sub-page of Pokémon Mystery Dungeon: Red Rescue Team.
This page is rather stubbly and could use some expansion. Are you a bad enough dude to rescue this article? |
Script Command Parsing Code | |
Game | Pokémon Mystery Dungeon: Red Rescue Team |
Start Address | 0x0809EACC |
End Address | 0x0809EB16 |
# of Entries | 38 (0x26) |
Entry Length | 2 bytes (0x02) |
Total Length | 74 bytes (0x4A) |
Back to the ROM map |
This code is where most commands are read from scripts and redirected to their specific methods.
0809EACC B5F0 push r4-r7,r14 0809EACE 4657 mov r7,r10 0809EAD0 464E mov r6,r9 0809EAD2 4645 mov r5,r8 0809EAD4 B4E0 push r5-r7 0809EAD6 B0EF add sp,-1BCh ;Method Initialization 0809EAD8 4681 mov r9,r0 ;r9 is where the RAM structure starts 0809EADA 2024 mov r0,24h ; 0809EADC 4448 add r0,r9 ; 0809EADE 4682 mov r10,r0 ; 0809EAE0 4651 mov r1,r10 ;loop start, r10 is the RAM location for command pointers 0809EAE2 684A ldr r2,[r1,4h] ;retrieves next command in ROM pointer from ram 0809EAE4 61CA str r2,[r1,1Ch] ;next pointer = current pointer 0809EAE6 A902 add r1,sp,8h ;r1 = Location of arguments on stack 0809EAE8 1C10 mov r0,r2 ;r0 = next command pointer 0809EAEA C838 ldmia [r0]!,r3-r5 ;Loads first three arguments of command 4 bytes at a time. 0809EAEC C138 stmia [r1]!,r3-r5 ;Sends them to the stack. 0809EAEE 6800 ldr r0,[r0] ;Loads last (pointer) argument of command into r0. 0809EAF0 6008 str r0,[r1] ;Puts pointer argument in stack just above the other arguments. 0809EAF2 3210 add r2,10h ;Increments script index (r2 points to next command in the script) 0809EAF4 4650 mov r0,r10 0809EAF6 6042 str r2,[r0,4h] ;Stores new script index in RAM 0809EAF8 A802 add r0,sp,8h ;r0 = command byte index 0809EAFA 7800 ldrb r0,[r0] ;Load command byte into r0 (1 byte) 0809EAFC 4651 mov r1,r10 0809EAFE 3120 add r1,20h 0809EB00 7008 strb r0,[r1] ;Stores command byte in RAM 0809EB02 0600 lsl r0,r0,18h 0809EB04 0E00 lsr r0,r0,18h ;Can't think of a use for these. 0809EB06 3801 sub r0,1h 0809EB08 1C0A mov r2,r1 0809EB0A 28F5 cmp r0,0F5h ;If the command byte is F6 or greater, 0809EB0C D8E8 bhi 809EAE0h ;Then move on to the next command 0809EB0E 0080 lsl r0,r0,2h ;else multiply command byte by 4 0809EB10 4901 ldr r1,=809EB1Ch ;r1=jump table start 0809EB12 1840 add r0,r0,r1 ;r0 = location of pointer in jump table 0809EB14 6800 ldr r0,[r0] ;Loads command pointer into r0. 0809EB16 4687 mov r15,r0 ;Changes Instruction Pointer to jump to the pointer to the command's method.