Pokémon Stadium (International)/ROM map

From Data Crystal
< Pokémon Stadium (International)
Revision as of 05:05, 7 August 2024 by Mantidactyle (talk | contribs) (Thanks Revo)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Chip tiny.png The following article is a ROM map for Pokémon Stadium (International).

Yay0_Decompress routine

  • 0xC3F0 - Overwrites RAM area (0x801AE0F8 - 0x801AE220) with a specific value when pressing A or Start at the title screen, when selecting a game mode, when accessing any stadium, when accessing the mini-games, and when the Pokémon choice is displayed before a battle
// Needs to be documented
LW A3, $0008 (A0)
LW T9, $000C (A0)
LW T8, $0004 (A0)
ADD A3, A3, A0
ADD T9, T9, A0
OR A2, R0, R0				// A2 == 0
ADDI A0, A0, $0010
ADD T8, T8, A1				// T8 + A1
(0xC410) BNEL A2, R0, $0000C428		// If A2 ≠ 0, branch to 0xC428
SLT T1, T0, R0
LW T0, $0000 (A0)
ADDIU A2, R0, $0020			// A2 = 32
ADDI A0, A0, $0004			// A0 += 4
SLT T1, T0, R0
(0xC428) BEQL T1, R0, $0000C448		// If T1 == 0, branch to 0xC448
LHU T2, $0000 (A3)
LB T2, $0000 (T9)
ADDI T9, T9, $0001			// T9 ++
ADDI A1, A1, $0001			// A1 ++
BEQ R0, R0, $0000C478			// Branch to 0xC478
SB T2, $FFFF (A1)
LHU T2, $0000 (A3)
(0xC448) ADDI A3, A3, $0002		// A3 += 2
SRL T3, T2, $C				// T3 == T2 >> 12
ANDI T2, T2, $0FFF			// T2 & 0xFFF
BEQ T3, R0, $0000C48C			// If T3 == 0, branch to 0xC48C
SUB T1, A1, T2				// T1 = A1 - T2
ADDI T3, T3, $0002			// T3 += 2
(0xC460) LB T2, $FFFF (T1)
ADDI T3, T3, $FFFF			// T3--
ADDI T1, T1, $0001			// T1 ++
ADDI A1, A1, $0001			// A1 ++
BNEZ T3, $0000C460			// If T3 ≠ 0, branch to 0xC460
SB T2, $FFFF (A1)			// Store T2 in RAM area (0x801AE0F8 - 0x801AE220)
(0xC478) SLL T0, T0, $1
BNE A1, T8, $0000C410			// If A1 ≠ T8, branch to 0xC410
ADDI A2, A2, $FFFF			// A2--
JR RA
NOP
(0xC48C) LBU T3, $0000 (T9)
ADDI T9, T9, $0001
BEQ R0, R0, $0000C460			// Branch to 0xC460
ADDI T3, T3, $0012

Initialize ? RAM area

  • 0xD13C - Initialize RAM area (0x801AE100 - 0x801AE830) before the battle starts
// Needs to be documented
BNEZ T0, $0000D1B8
LB V1, $0036 (SP)
LB V1, $0036 (SP)	// (sic)
BNE V1, S2, $0000D188
ADDIU T2, V1, $FFFF
BLTZ V1, $0000D210
SB T2, $0036 (SP)
SLL T3, S0, $1
ADDU T4, S1, T3
SH R0, $0000 (T4)
LB T7, $0036 (SP)
ADDIU S0, S0, $0001
SLL T5, S0, $18
ADDIU T8, T7, $FFFF
SB T8, $0036 (SP)
BGEZ T7, $0000D158
SRA S0, T5, $18
BEQ R0, R0, $0000D214
SLTI AT, S0, $0040
(0xD188) SLTI AT, S0, $0040
BEQ AT, R0, $0000D21C
SLL T9, S0, $1
ADDIU S0, S0, $0001
SLL T1, S0, $18
SRA S0, T1, $18
SLTI AT, S0, $0040
ADDU T0, S1, T9
BNEZ AT, $0000D190
SH R0, $0000 (T0)	// 00's (T0)
BEQ R0, R0, $0000D220
OR V0, R0, R0

PRN area init ?

8000C4A8: ADDIU SP, SP, 0xFFC8			;SP -= 0x38
8000C4AC: SW S5, 0x0028 (SP)			;Store S5 to (SP+0x28)
8000C4B0: SW S4, 0x0024 (SP)			;Store S4 to (SP+0x24)
8000C4B4: SW S3, 0x0020 (SP)			;Store S3 to (SP+0x20)
8000C4B8: SW S1, 0x0018 (SP)			;Store S1 to (SP+0x18)
8000C4BC: OR S1, A2, R0				;S1 = A2
8000C4C0: OR S3, A1, R0				;S3 = A1
8000C4C4: ADDIU S4, SP, 0x0034			;S4 = SP + 0x34
8000C4C8: ADDIU S5, SP, 0x0036			;S5 = SP + 0x36
8000C4CC: SW RA, 0x002C (SP)			;Store RA to (SP+0x2C)
8000C4D0: SW S2, 0x001C (SP)			;Store S2 to (SP+0x1C)
8000C4D4: OR S2, A3, R0				;S2 = A3
8000C4D8: SW S0, 0x0014 (SP)			;Store S0 to (SP+0x14)
8000C4DC: OR A2, S5, R0				;A2 = S5
8000C4E0: JAL 0x8000C644			;Jump to 0x8000C644 and link
8000C4E4: OR A1, S4, R0				;A1 = S4
8000C4E8: BEQ V0, R0, 0x8000C4F8		;if(V0==0), branch to 0x8000C4F8
8000C4EC: LH T7, 0x0034 (SP)			;T7 = (SP+0x34)
8000C4F0: BEQ R0, R0, 0x8000C620		;Branch to 0x8000C620
8000C4F4: ADDIU V0, R0, 0x0001			;V0 = 1
8000C4F8: LH T6, 0x0000 (S2)			;T6 = (S2)
8000C4FC: ADDIU S0, R0, 0x0001			;S0 = 1
8000C500: SLTI AT, S0, 0x0040
8000C504: ADDU T8, T6, T7			;T8 = T6 + T7
8000C508: SH T8, 0x0000 (S2)			;Store T8 to (S2)
8000C50C: LH T9, 0x0000 (S2)			;T9 = (S2)
8000C510: ADDIU S2, R0, 0x000F			;S2 = 0xF
8000C514: BEQ AT, R0, 0x8000C61C		;if(S0<0x40), branch to 0x8000C61C
8000C518: SH T9, 0x0000 (S1)			;Store T9 to (S1)
8000C51C: OR A0, S3, R0				;A0 = S3
8000C520: OR A1, S4, R0				;A1 = S4
8000C524: JAL 0x8000C644			;Jump to 0x8000C644 and link
8000C528: OR A2, S5, R0				;A2 = S5
8000C52C: BEQ V0, R0, 0x8000C53C		;if(V0==0), branch to 0x8000C53C
8000C530: LH T0, 0x0034 (SP)			;T0 = (SP+0x34)
8000C534: BEQ R0, R0, 0x8000C620		;Branch to 0x8000C620
8000C538: ADDIU V0, R0, 0x0001			;V0 = 1
8000C53C: BNEZ T0, 0x8000C5B8			;if(T0!=0), branch to 0x8000C5B8
8000C540: LB V1, 0x0036 (SP)			;V1 = (SP+0x36)
8000C544: LB V1, 0x0036 (SP)			;V1 = (SP+0x36)
8000C548: BNE V1, S2, 0x8000C588		;if(V1!=S2), branch to 0x8000C588
8000C54C: ADDIU T2, V1, 0xFFFF			;T2 = V1 - 1
8000C550: BLTZ V1, 0x8000C610			;if(V1<0), branch to 0x8000C610
8000C554: SB T2, 0x0036 (SP)			;Store T2 to (SP+0x36)
8000C558: SLL T3, S0, 0x1			;T3 = S0 << 1
8000C55C: ADDU T4, S1, T3			;T4 = S1 + T3
8000C560: SH R0, 0x0000 (T4)			;Store 0x0000 to (T4)
8000C564: LB T7, 0x0036 (SP)			;T7 = (SP+0x36)
8000C568: ADDIU S0, S0, 0x0001			;S0++
8000C56C: SLL T5, S0, 0x18			;T5 = S0 << 0x18
8000C570: ADDIU T8, T7, 0xFFFF			;T8 = T7 - 1
8000C574: SB T8, 0x0036 (SP)			;Store T7 to (SP+0x36)
8000C578: BGEZ T7, 0x8000C558			;if(T7 >=0), loop to 0x8000C558
8000C57C: SRA S0, T5, 0x18			;S0 = T5 >> 0x18
8000C580: BEQ R0, R0, 0x8000C614		;Branch to 0x8000C614
8000C584: SLTI AT, S0, 0x0040
8000C588: SLTI AT, S0, 0x0040
8000C58C: BEQ AT, R0, 0x8000C61C		;if(S0>=0x40), branch to 0x8000C61C
8000C590: SLL T9, S0, 0x1			;T9 = S0 << 1								;PRN area blanking loop
8000C594: ADDIU S0, S0, 0x0001			;S0++									;PRN area blanking loop
8000C598: SLL T1, S0, 0x18			;T1 = S0 << 0x18							;PRN area blanking loop
8000C59C: SRA S0, T1, 0x18			;S0 = T1 >> 0x18							;PRN area blanking loop
8000C5A0: SLTI AT, S0, 0x0040												;PRN area blanking loop
8000C5A4: ADDU T0, S1, T9			;T0 = S1 + T9								;PRN area blanking loop
8000C5A8: BNEZ AT, 0x8000C590			;if(S0 < 0x40), loop to 0x8000C590					;PRN area blanking loop
8000C5AC: SH R0, 0x0000 (T0)			;Store 0x0000 to (T0)							;PRN area blanking loop
8000C5B0: BEQ R0, R0, 0x8000C620		;Branch to 0x8000C620
8000C5B4: OR V0, R0, R0				;V0 = 0
8000C5B8: SLT V0, R0, V1
8000C5BC: ADDIU T4, V1, 0xFFFF
8000C5C0: BEQ V0, R0, 0x8000C5F4		;if(V1<=0), branch to 0x8000C5F4
8000C5C4: SB T4, 0x0036 (SP)			;Store T4 to (SP+0x36)
8000C5C8: SLL T5, S0, 0x1			;T5 = S0 << 1
8000C5CC: ADDU T6, S1, T5			;T6 = S1 + T5
8000C5D0: SH R0, 0x0000 (T6)			;Store 0x0000 to (T6)
8000C5D4: LB T9, 0x0036 (SP)			;T9 = (SP+0x36)
8000C5D8: ADDIU S0, S0, 0x0001			;S0++
8000C5DC: SLL T7, S0, 0x18			;T7 = S0 << 0x18
8000C5E0: SLT V0, R0, T9
8000C5E4: ADDIU T0, T9, 0xFFFF			;T0 = T9 - 1
8000C5E8: SB T0, 0x0036 (SP)			;Store T0 to (SP+0x36)
8000C5EC: BNEZ V0, 0x8000C5C8			;if(T9 > 0), loop to 0x8000C5C8
8000C5F0: SRA S0, T7, 0x18			;S0 = T7 >> 0x18
8000C5F4: LH T1, 0x0034 (SP)			;T1 = (SP+0x34)
8000C5F8: SLL T2, S0, 0x1			;T2 = S0 << 1
8000C5FC: ADDIU S0, S0, 0x0001			;S0++
8000C600: SLL T4, S0, 0x18			;T4 = S0 << 0x18
8000C604: ADDU T3, S1, T2			;T3 = S1 + T2
8000C608: SRA S0, T4, 0x18			;S0 = T4 >> 0x18
8000C60C: SH T1, 0x0000 (T3)			;Store T1 to (T3)
8000C610: SLTI AT, S0, 0x0040
8000C614: BNEL AT, R0, 0x8000C520		;if(S0<0x40), loop to 0x8000C520 and link
8000C618: OR A0, S3, R0				;A0 = S3
8000C61C: OR V0, R0, R0				;V0 = 0
8000C620: LW RA, 0x002C (SP)			;RA = (SP+0x2C)
8000C624: LW S0, 0x0014 (SP)			;S0 = (SP+0x14)
8000C628: LW S1, 0x0018 (SP)			;S1 = (SP+0x18)
8000C62C: LW S2, 0x001C (SP)			;S2 = (SP+0x1C)
8000C630: LW S3, 0x0020 (SP)			;S3 = (SP+0x20)
8000C634: LW S4, 0x0024 (SP)			;S4 = (SP+0x24)
8000C638: LW S5, 0x0028 (SP)			;S5 = (SP+0x28)
8000C63C: JR RA
8000C640: ADDIU SP, SP, 0x0038			;SP += 0x38

Battle - Initialize Pokémon color / texture / transparency

8001BC34: ADDIU 	SP, SP, 0xFFE0
8001BC38: SW 	RA, 0x001C (SP)
8001BC3C: SW 	S0, 0x0018 (SP)
8001BC40: SW 	A1, 0x0024 (SP)
8001BC44: OR 	S0, A0, R0				;S0 = A0
8001BC48: SW 	A2, 0x0028 (SP)
8001BC4C: JAL 	0x094
8001BC50: OR 	A1, A3, R0				;A1 = A3
8001BC54: JAL 	0xD98
8001BC58: ADDIU 	A0, S0, 0x0060		;A0 = S0 + 0x60
8001BC5C: LH 	A0, 0x002A (SP)
8001BC60: LH 	T6, 0x0026 (SP)
8001BC64: LBU 	T0, 0x0002 (S0)
8001BC68: LBU 	T8, 0x0001 (S0)
8001BC6C: SH 	T6, 0x0018 (S0)
8001BC70: ANDI 	T2, T0, 0xFFFB
8001BC74: ORI 	T4, T2, 0x0020
8001BC78: SB 	T2, 0x0002 (S0)
8001BC7C: ORI 	T6, T4, 0x0040
8001BC80: ORI 	T9, T8, 0x0001
8001BC84: SB 	T4, 0x0002 (S0)
8001BC88: ANDI 	T8, T6, 0xFFFD
8001BC8C: SB 	T9, 0x0001 (S0)
8001BC90: SB 	T6, 0x0002 (S0)
8001BC94: ADDIU 	V0, R0, 0xFF00		;V0 = 0xFFFFFF00
8001BC98: ADDIU 	V1, R0, 0xFFFF		;V1 = 0xFFFFFFFF
8001BC9C: ADDIU 	T7, R0, 0x00FF		;T7 = 0xFF
8001BCA0: SB 	T8, 0x0002 (S0)
8001BCA4: ANDI 	T9, T8, 0xFFF7
8001BCA8: SB 	T7, 0x001D (S0)
8001BCAC: SB 	R0, 0x001C (S0)			;Pokémon gold attribute set to 0
8001BCB0: SW 	V0, 0x00A0 (S0)			;Pokémon RGB coloration - copy
8001BCB4: SW 	V0, 0x003C (S0)			;Pokémon RGB coloration set to V0
8001BCB8: SH 	V1, 0x0040 (S0)
8001BCBC: SW 	R0, 0x0044 (S0)
8001BCC0: SH 	V1, 0x0054 (S0)
8001BCC4: SW 	R0, 0x0058 (S0)
8001BCC8: SB 	T9, 0x0002 (S0)
8001BCCC: BLEZ 	A0, 0x8001BCDC
8001BCD0: SH 	A0, 0x001A (S0)
8001BCD4: JAL 	0x60C
8001BCD8: OR 	A0, S0, R0
8001BCDC: LW 	RA, 0x001C (SP)
8001BCE0: LW 	S0, 0x0018 (SP)
8001BCE4: ADDIU 	SP, SP, 0x0020
8001BCE8: JR 	RA
8001BCEC: NOP

Gym Leader Castle - Gym initialization

8002B6BC: LUI 	V1, 0x800B
8002B6C0: LUI 	A0, 0x800B
8002B6C4: ADDIU 	A0, A0, 0xE548
8002B6C8: ADDIU 	V1, V1, 0xE540
8002B6CC: ADDIU 	V0, R0, 0x00FF
8002B6D0: ADDIU 	V1, V1, 0x0004
8002B6D4: SB 	V0, 0x11E1 (V1)
8002B6D8: SB 	V0, 0x11E2 (V1)
8002B6DC: SB 	V0, 0x11E3 (V1)
8002B6E0: BNE 	V1, A0, 0x8002B6D0
8002B6E4: SB 	V0, 0x11E0 (V1)
8002B6E8: LUI 	V0, 0x800B
8002B6EC: ADDIU 	V0, V0, 0xE540
8002B6F0: ADDIU 	T6, R0, 0x0001		;Start at Trainer 1
8002B6F4: SB 	T6, 0x0003 (V0)			;Store current Trainer in (V0+0x3)
8002B6F8: JR 	RA
8002B6FC: SB 	R0, 0x11F3 (V0)

Writes ID of new Pokémon after a switch or replacement

  • 0x3F7E8-0x3F900
8003EBE8: LBU A3, 0x003D (SP)		;A3 = (0x800816FD)
8003EBEC: LW T3, 0x0020 (SP)		;T3 = (0x800816E0)
8003EBF0: LUI AT, 0x8010
8003EBF4: XORI T9, A3, 0x0001
8003EBF8: ADDU AT, AT, T9		;AT = 0x80100000 + A3 ⊕ 1
8003EBFC: SB R0, 0xCCC8 (AT)		;Store 0 to (0x800FCCC8 + (A3 ⊕ 1))
8003EC00: SW T9, 0x001C (SP)		;Store T9 to 0x800816DC
8003EC04: LW V1, 0x0000 (T3)		;V1 = (T3)
8003EC08: LW A2, 0x0024 (SP)		;A2 = (0x800816E4)
8003EC0C: SLL T5, A3, 0x5		;T5 = A3 << 5
8003EC10: LHU T4, 0x000C (V1)		;T4 = Player's active Pokémon ID
8003EC14: LUI AT, 0x8010
8003EC18: LUI T6, 0x8010
8003EC1C: ADDU T5, T5, A3		;T5 += A3
8003EC20: SLL T5, T5, 0x2		;T5 << 2
8003EC24: ADDIU T6, T6, 0xCB48		;T6 = 0x800FCB48
8003EC28: ADDU AT, AT, A2		;AT = 0x80100000 + A2
8003EC2C: ADDU V0, T5, T6		;V0 = 0x800FCB48 + T5
8003EC30: SW T4, 0xCB28 (AT)		;Store Player's active Pokémon to (AT-0x34D8)
8003EC34: LW T7, 0x0024 (V0)		;T7 = (V0+0x24)
8003EC38: ADDIU T8, T7, 0x0001		;T8 = T7 + 1
8003EC3C: SW T8, 0x0024 (V0)		;Store T8 in (V0+0x24)
8003EC40: LHU T9, 0x000C (V1)		;T9 = Player's active Pokémon ID
8003EC44: ANDI T3, T8, 0x000F		;T3 = T8 & 0xF
8003EC48: SLL T4, T3, 0x1		;T4 = T3 << 1
8003EC4C: ADDU T5, V0, T4		;T5 = V0 + T4
8003EC50: SH T9, 0x0000 (T5)		;Store Player's active Pokémon ID in (T5)
8003EC54: LBU T1, 0x000B (V1)		;T1 = next CPU Pokémon ID
8003EC58: BLEZ T1, 0x8003F19C		;If(CPU Pokémon ID ≤ 0), branch to 0x8003F19C
8003EC5C: OR A1, T1, R0			;A1 = next CPU Pokémon ID
8003EC60: SLTI AT, T1, 0x0098
8003EC64: BEQ AT, R0, 0x8003F19C	;If(CPU Pokémon ID > 151), branch to 0x8003F19C
8003EC68: LUI T6, 0x8008
8003EC6C: ADDIU T6, T6, 0x839C		;T6 = 0x8007839C
8003EC70: ADDU A2, A3, T6		;A2 = 0x8007839C + A3
8003EC74: LBU T0, 0x0000 (A2)		;T0 = 
8003EC78: OR V0, R0, R0			;V0 = 0
8003EC7C: SLL T7, A3, 0x3		;T7 = A3 << 3
8003EC80: BEQ T0, R0, 0x8003ECB0	;If(T0 == 0), branch to 0x8003ECB0
8003EC84: OR A0, T0, R0			;A0 = T0
8003EC88: LUI T8, 0x8010
8003EC8C: ADDIU T8, T8, 0xCB38		;T8 = 0x800FCB38
8003EC90: ADDU V1, T7, T8		;V1 = 0x800FCB38 + T7
8003EC94: LBU T2, 0x0000 (V1)		;T2 = Previous CPU Pokémon ID
8003EC98: ADDIU V0, V0, 0x0001		;V0++
8003EC9C: SLTU AT, V0, A0
8003ECA0: BEQ A1, T2, 0x8003EF80	;If(CPU Pokémon ID == Previous CPU Pokémon ID), branch to 0x8003EF80
8003ECA4: NOP
8003ECA8: BNEZ AT, 0x8003EC94		;If(V0 < A0), branch to 0x8003EC94
8003ECAC: ADDIU V1, V1, 0x0001		;V1++
8003ECB0: SLL T3, A3, 0x3		;T3 = A3 << 3
8003ECB4: ADDU T4, T3, T0		;T4 = T3
8003ECB8: LUI AT, 0x8010
8003ECBC: ADDU AT, AT, T4		;AT += T4
8003ECC0: ADDIU T9, T0, 0x0001		;T9 = T0 + 1
8003ECC4: SB T1, 0xCB38 (AT)		;Stores the next Pokémon ID to (0x800FCB38 + T4)
8003ECC8: ANDI T5, T9, 0x00FF		;T5 = T9 & 0xFF
8003ECCC: SLTI AT, T5, 0x0008
8003ECD0: BNEZ AT, 0x8003ECE0		;If(T5 < 8), branch to 0x8003ECE0
8003ECD4: SB T9, 0x0000 (A2)		;Store T9 to (A2)
8003ECD8: ADDIU T6, R0, 0x0007		;T6 = 7
8003ECDC: SB T6, 0x0000 (A2)		;Store T6 to (A2)
8003ECE0: LUI T7, 0x8008
8003ECE4: LW T7, 0x83CC (T7)		;T7 = (0x800783CC)
8003ECE8: LUI AT, 0x8010
8003ECEC: ADDU AT, AT, A3
8003ECF0: BEQ T7, R0, 0x8003EF64	;If(T7 == 0), branch to 0x8003EF64
8003ECF4: SB R0, 0xCB30 (AT)		;Store 0 in (0x800FCB30 + A3)
8003ECF8: ADDIU A0, A1, 0x00CB		;A0 = CPU Pokémon ID + 0xCB
8003ECFC: JAL 0x80041C70		;Jump to 0x80041C70 and link
8003ED00: SB A3, 0x003D (SP)		;Push A3 to the stack

0x8003ED04

8003ED04: LBU T8, 0x003C (SP)		;T8 = (SP + 0x3C)
8003ED08: LUI A0, 0x8007
8003ED0C: LBU A3, 0x003D (SP)		;A3 = (SP + 0x3D)
8003ED10: BEQ T8, R0, 0x8003ED24	;If(T8 == 0), branch to 0x8003ED24
8003ED14: ADDIU A0, A0, 0x7FEC		;A0 = 0x80077FEC
8003ED18: JAL 0x800420C0
8003ED1C: SB A3, 0x003D (SP)		;Store A3 to (SP + 0x3D)

0x8003ED20

8003ED20: LBU A3, 0x003D (SP)		;A3 = (SP + 0x3D)
8003ED24: LW T2, 0x001C (SP)		;T2 = (SP + 0x1C)
8003ED28: LUI A0, 0x8010
8003ED2C: LW T4, 0x0020 (SP)
8003ED30: SLL T3, T2, 0x2
8003ED34: ADDU A0, A0, T3
8003ED38: LW A0, 0xCB18 (A0)
8003ED3C: BEQL A0, R0, 0x8003F1A0
8003ED40: LW RA, 0x0014 (SP)
8003ED44: LW T9, 0x0000 (T4)
8003ED48: LUI AT, 0x4F80
8003ED4C: ADDIU T7, R0, 0x0001
8003ED50: LBU T5, 0x0026 (T9)
8003ED54: MTC1 T5, F4
8003ED58: BGEZ T5, 0x8003ED6C
8003ED5C: CVT.S.W F0, F4
8003ED60: MTC1 AT, F6
8003ED64: NOP
8003ED68: ADD.S F0, F0, F6
8003ED6C: LBU T6, 0x0026 (A0)
8003ED70: ADD.S F16, F0, F0
8003ED74: LUI AT, 0x4F80
8003ED78: MTC1 T6, F8
8003ED7C: BGEZ T6, 0x8003ED90
8003ED80: CVT.S.W F2, F8
8003ED84: MTC1 AT, F10
8003ED88: NOP
8003ED8C: ADD.S F2, F2, F10
8003ED90: SUB.S F12, F2, F0
8003ED94: LUI AT, 0x8008
8003ED98: C.LT.S F16, F12
8003ED9C: NOP
8003EDA0: BC1F 0x8003EDC0
8003EDA4: NOP
8003EDA8: LUI AT, 0x8010
8003EDAC: SB T7, 0xCCB1 (AT)
8003EDB0: LUI AT, 0x8010
8003EDB4: ADDU AT, AT, A3
8003EDB8: BEQ R0, R0, 0x8003F19C
8003EDBC: SB R0, 0xCCBA (AT)
8003EDC0: LWC1 F14, 0xC800 (AT)
8003EDC4: LUI AT, 0x8010
8003EDC8: ADDIU T8, R0, 0x0001
8003EDCC: MUL.S F18, F0, F14
8003EDD0: C.LT.S F18, F12
8003EDD4: NOP
8003EDD8: BC1F 0x8003EDF4
8003EDDC: NOP
8003EDE0: SB T8, 0xCCB1 (AT)
8003EDE4: LUI AT, 0x8010
8003EDE8: ADDU AT, AT, A3
8003EDEC: BEQ R0, R0, 0x8003F19C
8003EDF0: SB R0, 0xCCBA (AT)
8003EDF4: MUL.S F4, F2, F14
8003EDF8: SUB.S F6, F0, F2
8003EDFC: LUI T3, 0x8010
8003EE00: ADDIU T3, T3, 0xCCD6
8003EE04: ADDIU T2, R0, 0x0001
8003EE08: LUI AT, 0x8010
8003EE0C: ADDU V0, A3, T3
8003EE10: C.LT.S F4, F6
8003EE14: NOP
8003EE18: BC1F 0x8003EEC0
8003EE1C: NOP
8003EE20: SB T2, 0xCCB1 (AT)
8003EE24: LBU T4, 0x0000 (V0)
8003EE28: LUI T9, 0x8010
8003EE2C: ADDU T9, T9, A3
8003EE30: BEQ T4, R0, 0x8003EE6C
8003EE34: LBU T7, 0x003C (SP)
8003EE38: LBU T9, 0xCCBA (T9)
8003EE3C: LBU T5, 0x003C (SP)
8003EE40: BEQ T9, R0, 0x8003EE6C
8003EE44: NOP
8003EE48: BNEZ T5, 0x8003EEAC
8003EE4C: LUI A0, 0x8008
8003EE50: ADDIU A0, A0, 0x8014
8003EE54: SW V0, 0x0020 (SP)
8003EE58: JAL 0x800420C0
8003EE5C: SB A3, 0x003D (SP)

0x80041C70

80041C70: LUI T6, 0x8008
80041C74: LW T6, 0x8388 (T6)		;T6 = (0x80078388)
80041C78: ADDIU SP, SP, 0xFFE8		;SP -= 0x18
80041C7C: SW RA, 0x0014 (SP)
80041C80: BEQ T6, R0, 0x80041CDC	;If(T6 == 0), leave this function
80041C84: OR A1, A0, R0			;A1 = [Pokémon ID + offset]
80041C88: LUI T7, 0x8008
80041C8C: LBU T7, 0x83FC (T7)		;T7 = (0x800783FC)
80041C90: BEQL T7, R0, 0x80041CE0	;If(T7 == 0), branch to 0x80041CE0 and link
80041C94: LW RA, 0x0014 (SP)
80041C98: BEQ A0, R0, 0x80041CDC	;If(A0 == 0), leave this function
80041C9C: ADDIU A0, R0, 0x0001		;A0 = 1
80041CA0: JAL 0x80056C10
80041CA4: SW A1, 0x0018 (SP)		;Store [Pokémon ID + offset] to (SP + 0x18)
80041CA8: LUI A2, 0x8008
80041CAC: ADDIU A2, A2, 0x83B8		;A2 = 0x800783B8
80041CB0: LW V1, 0x0000 (A2)		;V1 = (A2)
80041CB4: LW A1, 0x0018 (SP)		;A1 = [Pokémon ID + offset]
80041CB8: LUI AT, 0x8008
80041CBC: ANDI T8, V1, 0x0003		;T8 = V1 & 3
80041CC0: SLL T9, T8, 0x2		;T9 = T8 << 2
80041CC4: ADDU AT, AT, T9		;AT += T9
80041CC8: ADDIU T0, V1, 0x0001		;T0 = V1 + 1
80041CCC: SW A1, 0x83A4 (AT)		;A1 = (0x800783A4 + T9)
80041CD0: SW T0, 0x0000 (A2)		;T0 = (AT)
80041CD4: JAL 0x80056C10
80041CD8: OR A0, V0, R0
80041CDC: LW RA, 0x0014 (SP)
80041CE0: ADDIU SP, SP, 0x0018		;SP += 0x18
80041CE4: JR RA
80041CE8: NOP

0x800420C0

800420C0: ADDIU SP, SP, 0xFFE8
800420C4: SW RA, 0x0014 (SP)
800420C8: JAL 0x80041EF4
800420CC: NOP
800420D0: BEQ V0, R0, 0x800420E0
800420D4: OR A0, V0, R0
800420D8: JAL 0x80041C70
800420DC: NOP
800420E0: LW RA, 0x0014 (SP)
800420E4: ADDIU SP, SP, 0x0018
800420E8: JR RA
800420EC: NOP

0x800424B0 (Battle stats calculation ?)

800424B0: LBU T5, 0x0039 (SP)
800424B4: LBU T8, 0x003B (SP)
800424B8: LUI T7, 0x8008
800424BC: SLL T6, T5, 0x4
800424C0: ADDIU T7, T7, 0x82A4
800424C4: SUBU T6, T6, T5
800424C8: ADDU A1, T6, T7
800424CC: ADDU T9, A1, T8
800424D0: LBU A0, 0x0000 (T9)
800424D4: LUI AT, 0x3F80
800424D8: MTC1 AT, F14
800424DC: ADDIU A3, R0, 0x0001
800424E0: LW A2, 0x0018 (SP)
800424E4: LW T0, 0x0074 (SP)
800424E8: LW T1, 0x0024 (SP)
800424EC: BEQ A3, A0, 0x80042510
800424F0: LW T2, 0x0078 (SP)
800424F4: ADDIU AT, R0, 0x0002
800424F8: BEQ A0, AT, 0x8004251C
800424FC: ADDIU AT, R0, 0x0003
80042500: BEQL A0, AT, 0x80042530
80042504: LUI AT, 0x4000
80042508: BEQ R0, R0, 0x8004253C
8004250C: MOV.S F12, F14
80042510: MTC1 R0, F12
80042514: BEQ R0, R0, 0x80042540
80042518: ANDI T3, V0, 0x00FF
8004251C: LUI AT, 0x3F00
80042520: MTC1 AT, F12
80042524: BEQ R0, R0, 0x80042540
80042528: ANDI T3, V0, 0x00FF
8004252C: LUI AT, 0x4000
80042530: MTC1 AT, F12
80042534: BEQ R0, R0, 0x80042540
80042538: ANDI T3, V0, 0x00FF
8004253C: ANDI T3, V0, 0x00FF
80042540: LWC1 F6, 0x0060 (SP)
80042544: ADDU T4, A1, T3
80042548: LBU A0, 0x0000 (T4)
8004254C: MUL.S F10, F6, F12
80042550: ADDIU A1, R0, 0x0084
80042554: BEQ A3, A0, 0x80042578
80042558: XORI V1, T1, 0x0001
8004255C: ADDIU AT, R0, 0x0002
80042560: BEQ A0, AT, 0x80042584
80042564: ADDIU AT, R0, 0x0003
80042568: BEQL A0, AT, 0x80042598
8004256C: LUI AT, 0x4000
80042570: BEQ R0, R0, 0x800425A4
80042574: MOV.S F2, F14
80042578: MTC1 R0, F2
8004257C: BEQ R0, R0, 0x800425A8
80042580: LBU V0, 0x0002 (A2)
80042584: LUI AT, 0x3F00
80042588: MTC1 AT, F2
8004258C: BEQ R0, R0, 0x800425A8
80042590: LBU V0, 0x0002 (A2)
80042594: LUI AT, 0x4000
80042598: MTC1 AT, F2
8004259C: BEQ R0, R0, 0x800425A8
800425A0: LBU V0, 0x0002 (A2)
800425A4: LBU V0, 0x0002 (A2)
800425A8: LBU T5, 0x001C (T0)
800425AC: BEQL T5, V0, 0x800425C0
800425B0: LUI AT, 0x3FC0
800425B4: LBU T6, 0x001D (T0)
800425B8: BNE T6, V0, 0x800425CC
800425BC: LUI AT, 0x3FC0
800425C0: MTC1 AT, F0
800425C4: BEQ R0, R0, 0x800425D0
800425C8: NOP
800425CC: MOV.S F0, F14
800425D0: MULTU V1, A1
800425D4: LUI A0, 0x8010
800425D8: MUL.S F8, F10, F2
800425DC: ADDIU A0, A0, 0xCB48
800425E0: MUL.S F4, F8, F0
800425E4: MFLO T7
800425E8: ADDU V0, A0, T7
800425EC: LW T8, 0x0024 (V0)
800425F0: MTC1 R0, F8
800425F4: ANDI T9, T8, 0x000F
800425F8: SLL T3, T9, 0x1
800425FC: ADDU T4, V0, T3
80042600: LHU T5, 0x0000 (T4)
80042604: SWC1 F4, 0x005C (SP)
80042608: MTC1 T5, F6
8004260C: BGEZ T5, 0x80042624
80042610: CVT.S.W F16, F6
80042614: LUI AT, 0x4F80
80042618: MTC1 AT, F10
8004261C: NOP
80042620: ADD.S F16, F16, F10
80042624: C.EQ.S F16, F8
80042628: LUI AT, 0x3F80
8004262C: BC1FL 0x80042640             ;if(F16 != F8), branch likely to 0x42640
80042630: LHU T6, 0x0028 (T2)          ;T6 = P2 HP
80042634: MTC1 AT, F16
80042638: NOP
8004263C: LHU T6, 0x0028 (T2)          ;T6 = P2 HP
80042640: LUI A2, 0x8008
80042644: ADDIU A2, A2, 0x8390         ;A2 = 80078390
80042648: MTC1 T6, F4
8004264C: ADDU T7, A2, V1
80042650: BGEZ T6, 0x80042668          ;if(P2 HP ≥ 0), branch to 0x42668
80042654: CVT.S.W F6, F4
80042658: LUI AT, 0x4F80
8004265C: MTC1 AT, F10
80042660: NOP
80042664: ADD.S F6, F6, F10
80042668: LBU T8, 0x0000 (T7)
8004266C: MTC1 R0, F10
80042670: SWC1 F6, 0x0054 (SP)
80042674: BNE A3, T8, 0x80042684
80042678: LUI AT, 0x8008
8004267C: BEQ R0, R0, 0x80042688
80042680: LWC1 F18, 0xCB80 (AT)
80042684: MOV.S F18, F14
80042688: MULTU T1, A1
8004268C: LUI AT, 0x4F80
80042690: MFLO T9
80042694: ADDU V0, A0, T9
80042698: LW T3, 0x0024 (V0)
8004269C: ADDU T9, A2, T1
800426A0: ANDI T4, T3, 0x000F
800426A4: SLL T5, T4, 0x1
800426A8: ADDU T6, V0, T5
800426AC: LHU T7, 0x0000 (T6)
800426B0: MTC1 T7, F8
800426B4: BGEZ T7, 0x800426C8
800426B8: CVT.S.W F2, F8
800426BC: MTC1 AT, F4
800426C0: NOP
800426C4: ADD.S F2, F2, F4
800426C8: C.EQ.S F2, F10
800426CC: LUI AT, 0x3F80
800426D0: BC1FL 0x800426E4
800426D4: LHU T8, 0x0028 (T0)
800426D8: MTC1 AT, F2
800426DC: NOP
800426E0: LHU T8, 0x0028 (T0)
800426E4: LUI AT, 0x4F80
800426E8: MTC1 T8, F6
800426EC: BGEZ T8, 0x80042700
800426F0: CVT.S.W F8, F6
800426F4: MTC1 AT, F4
800426F8: NOP
800426FC: ADD.S F8, F8, F4
80042700: LBU T3, 0x0000 (T9)
80042704: LWC1 F10, 0x0054 (SP)
80042708: SWC1 F8, 0x0048 (SP)
8004270C: BNE A3, T3, 0x80042720
80042710: DIV.S F6, F10, F16
80042714: LUI AT, 0x8008
80042718: BEQ R0, R0, 0x80042724
8004271C: LWC1 F12, 0xCB84 (AT)
80042720: MOV.S F12, F14
80042724: LBU V0, 0x0015 (T2)
80042728: LUI AT, 0x8008
8004272C: ANDI T4, V0, 0x0020
80042730: BEQ T4, R0, 0x80042740
80042734: ANDI T5, V0, 0x0007
80042738: BEQ R0, R0, 0x80042754
8004273C: LWC1 F0, 0xCB88 (AT)
80042740: BEQ T5, R0, 0x80042750
80042744: LUI AT, 0x8008
80042748: BEQ R0, R0, 0x80042754
8004274C: LWC1 F0, 0xCB8C (AT)
80042750: MOV.S F0, F14
80042754: LUI AT, 0x8008
80042758: LWC1 F14, 0xCB90 (AT)
8004275C: LUI AT, 0x3F80
80042760: MTC1 AT, F8
80042764: MUL.S F4, F6, F14
80042768: LWC1 F6, 0x005C (SP)
8004276C: ADDIU V0, R0, 0x0001
80042770: ADD.S F10, F4, F8
80042774: MTC1 AT, F8
80042778: LUI AT, 0x4F00
8004277C: MUL.S F4, F10, F6
80042780: LWC1 F10, 0x0048 (SP)
80042784: DIV.S F6, F10, F2
80042788: MUL.S F10, F6, F14
8004278C: ADD.S F6, F8, F10
80042790: MUL.S F8, F4, F6
80042794: NOP
80042798: MUL.S F10, F8, F18
8004279C: NOP
800427A0: MUL.S F4, F10, F12
800427A4: NOP
800427A8: MUL.S F6, F4, F0
800427AC: CFC1 T6, F31
800427B0: CTC1 V0, F31
800427B4: NOP
800427B8: CVT.W.S F8, F6
800427BC: CFC1 V0, F31
800427C0: NOP
800427C4: ANDI V0, V0, 0x0078
800427C8: BEQ V0, R0, 0x80042814
800427CC: NOP
800427D0: MTC1 AT, F8
800427D4: ADDIU V0, R0, 0x0001
800427D8: SUB.S F8, F6, F8
800427DC: CTC1 V0, F31
800427E0: NOP
800427E4: CVT.W.S F8, F8
800427E8: CFC1 V0, F31
800427EC: NOP
800427F0: ANDI V0, V0, 0x0078
800427F4: BNEZ V0, 0x8004280C
800427F8: NOP
800427FC: MFC1 V0, F8
80042800: LUI AT, 0x8000
80042804: BEQ R0, R0, 0x80042824
80042808: OR V0, V0, AT
8004280C: BEQ R0, R0, 0x80042824
80042810: ADDIU V0, R0, 0xFFFF
80042814: MFC1 V0, F8
80042818: NOP
8004281C: BLTZ V0, 0x8004280C
80042820: NOP
80042824: ORI AT, R0, 0x8000
80042828: CTC1 T6, F31
8004282C: SLTU AT, V0, AT
80042830: BNEZ AT, 0x8004283C
80042834: OR V1, V0, R0
80042838: ADDIU V1, R0, 0x7FFF
8004283C: OR V0, V1, R0
80042840: LW RA, 0x0014 (SP)
80042844: ADDIU SP, SP, 0x0070
80042848: JR RA
8004284C: NOP

Pokémon Types & Moves handling #1

  • 0x4308C - Loads P1's Pokémon Type
SWC1 F4, $0060 (SP)
LBU A0, $001C (T2)	// Loads P1's Pokémon type in register A0
SW T1, $0024 (SP)
JAL $00042850
  • 0x43450 - Checks if the Defending Pokémon has a valid Type
SW A0, $0000 (SP)
ANDI A0, A0, $00FF
SLTIU AT, A0, $001B	// If P1's Pokémon Type is < 0x1B, sets AT to 1
BEQ AT, R0, $000434F0	// If P1's Pokémon Type is invalid, jump to 0x434F0
SLL T6, A0, $2
LUI AT, $8008
ADDU AT, AT, T6		// AT = 0x80080000 + (P1's Pokémon type << 2)
LW T6, $CB94 (AT)	// Load pointer to either JR RA for valid Types, or to 0x434F0 for invalid Types
JR T6

Alternate PRNG

0x4D820 - Alternate PRNG. seed1 uses standard Ansi C PRNG instead of the slightly modified one (use 0x303B as an offset instead of 0x3039), and only rolls once instead of a number of time which depends on the Counter(COP0) register.

seed1 = seed1 × 0x41C64E6D + 0x3039;
if(seed2 && 1 == 1) {
	seed2 = seed2 ⊕ 0x11020;
}
seed2 = seed2 >> 1;
prn = seed2 ⊕ seed1;
8004CC34: LUI A0, 0x8008
8004CC38: ADDIU A0, A0, 0x8F9C       ;A0 = 0x80078F9C
8004CC3C: LW T6, 0x0000 (A0)         ;T6 = seed1
8004CC40: LUI AT, 0x41C6
8004CC44: ORI AT, AT, 0x4E6D         ;AT = 0x41C64E6D
8004CC48: MULTU T6, AT
8004CC4C: LUI A1, 0x8008
8004CC50: ADDIU A1, A1, 0x8FA0       ;A1 = 0x80078FA0
8004CC54: LW V1, 0x0000 (A1)         ;V1 = seed2
8004CC58: LUI AT, 0x0001
8004CC5C: ORI AT, AT, 0x1020         ;AT = 0x11020
8004CC60: ANDI T9, V1, 0x0001        ;T9 = seed2 & 1
8004CC64: XOR T0, V1, AT             ;T0 = seed2 ^ 0x11020
8004CC68: MFLO T7                    ;T7 = seed1 × 0x41C64E6D
8004CC6C: ADDIU T8, T7, 0x3039       ;T8 = T7 + 0x3039
8004CC70: BEQ T9, R0, 0x8004CC80     ;if(T9 == 0), branch to 0x8004CC80
8004CC74: SW T8, 0x0000 (A0)         ;Store new seed1 in 0x80078F9C
8004CC78: SW T0, 0x0000 (A1)         ;else store new seed2 in 0x80078FA0
8004CC7C: OR V1, T0, R0              ;     V1 = seed2;
8004CC80: LW T2, 0x0000 (A0)         ;T2 = seed1
8004CC84: SRL T1, V1, 0x1            ;T1 = seed2 >> 1
8004CC88: SW T1, 0x0000 (A1)
8004CC8C: JR RA
8004CC90: XOR V0, T2, T1             ;V0 = seed1 ^ seed2

Game and Battle Initialization

  • 0x58BD0 - Initialize Battle-related values to 0 at game start-up, or before a battle starts
SLTI AT, A1, $000C
BNEZ AT, $00058C4C
SUBU V1, R0, A0
ANDI V1, V1, $0003
BEQ V1, R0, $00058BF0
SUBU A1, A1, V1
SWL R0, $0000 (A0)
ADDU A0, A0, V1
(0x58BF0) ADDIU AT, R0, $FFE0
AND A3, A1, AT
BEQ A3, R0, $00058C2C
SUBU A1, A1, A3
ADDU A3, A3, A0
ADDIU A0, A0, $0020
SW R0, $FFE0 (A0)	// 00's the selected RAM area (PRNG area, Move data area...)
SW R0, $FFE4 (A0)
SW R0, $FFE8 (A0)
SW R0, $FFEC (A0)
SW R0, $FFF0 (A0)
SW R0, $FFF4 (A0)
SW R0, $FFF8 (A0)
BNE A0, A3, $00058C04
SW R0, $FFFC (A0)
ADDIU AT, R0, $FFFC
AND A3, A1, AT
BEQ A3, R0, $00058C4C
SUBU A1, A1, A3
ADDU A3, A3, A0
ADDIU A0, A0, $0004
BNE A0, A3, $00058C40
SW R0, $FFFC (A0)
(0x58C4C) BLEZ A1, $00058C64
NOP
ADDU A1, A1, A0
ADDIU A0, A0, $0001
BNE A0, A1, $00058C58
SB R0, $FFFF (A0)
JR RA
NOP

PRNG count

MFC0 V0, COUNT	// V0 = Counter(COP0)
JR RA
NOP

Copy Move name

  • 0x5E450 - Copy Move name
8005D850: ADDIU SP, SP, 0xFF28
8005D854: SW    S7, 0x0034 (SP)
8005D858: SW    S6, 0x0030 (SP)
8005D85C: SW    S5, 0x002C (SP)
8005D860: SW    S8, 0x0038 (SP)
8005D864: SW    S4, 0x0028 (SP)
8005D868: SW    S3, 0x0024 (SP)
8005D86C: SW    A3, 0x00E4 (SP)
8005D870: LUI 	S5, 0x8008
8005D874: LUI 	S6, 0x8008
8005D878: LUI 	S7, 0x8008
8005D87C: OR    A3, A2, R0                            ;A3 = A2
8005D880: OR    S3, A1, R0                            ;S3 = A1
8005D884: OR    S4, A0, R0                            ;S4 = A0
8005D888: SW    RA, 0x003C (SP)
8005D88C: SW    S2, 0x0020 (SP)
8005D890: SW    S1, 0x001C (SP)
8005D894: SW    S0, 0x0018 (SP)
8005D898: SW    A2, 0x00E0 (SP)
8005D89C: SW    R0, 0x00CC (SP)
8005D8A0: ADDIU S7, S7, 0xA960                        ;S7 = 0x8007A960
8005D8A4: ADDIU S6, S6, 0xE394                        ;S6 = 0x8007E394
8005D8A8: ADDIU S5, S5, 0xA984                        ;S5 = 0x8007A984
8005D8AC: ADDIU S8, R0, 0x000A                        ;S8 = 0xA
8005D8B0: LBU   V0, 0x0000 (A3)                       ;V0 = (A3)
8005D8B4: OR    S2, A3, R0                            ;S2 = A3
8005D8B8: ADDIU V1, R0, 0x0025                        ;V1 = 0x25
8005D8BC: BEQ   V0, R0, 0x8005D8E4                    ;if V0 = 0, branch to 0x8005D8E4
8005D8C0: OR    S0, V0, R0                            ;S0 = V0
8005D8C4: BEQL V1, V0, 0x8005D8E8                     ;if V1 = V0, branch to 0x8005D8E8
8005D8C8: SUBU V0, S2, A3                             ;V0 = S2 - A3
8005D8CC: LBU   V0, 0x0001 (S2)                       ;V0 = character at (S2+0x1)
8005D8D0: ADDIU S2, S2, 0x0001                        ;S2++
8005D8D4: BEQ   V0, R0, 0x8005D8E4                    ;if V0 = 0, branch to 0x8005D8E4
8005D8D8: OR    S0, V0, R0                            ;S0 = V0
8005D8DC: BNEL  V1,V0,0x8005D8D0                      ;if(V1 ≠ V0), branch to 0x8005D8D0 and link
8005D8E0: LBU   V0, 0x0001 (S2)                       ;V0 = character at (S2+0x1)
8005D8E4: SUBU  V0, S2, A3                            ;V0 = text.size
8005D8E8: BLEZ  V0, 0x8005D920                        ;if(text.size ≤ 0), branch to 0x8005D920
8005D8EC: OR    A0, S3, R0                            ;A0 = S3
8005D8F0: OR    A1, A3, R0                            ;A1 = text pointer
8005D8F4: OR    S1, V0, R0                            ;S1 = text.size
8005D8F8: JALR #1RA, S4
8005D8FC: OR    A2, V0, R0                            ;A2 = V0
8005D900: BEQ 	V0, R0, 0x8005D918                     ;if(V0 == 0), branch to 0x8005D918
8005D904: OR    S3, V0, R0
8005D908: LW    T6, 0x00CC (SP)
8005D90C: ADDU T7, T6, S1
8005D910: BEQ 	R0, R0, 0x8005D920                     ;Branch to 0x8005D920
8005D914: SW 	T7, 0x00CC (SP)
8005D918: BEQ 	R0, R0, 0x8005DE68                     ;Branch to 0x8005DE68
8005D91C: LW 	V0, 0x00CC (SP)
8005D920: BNEZ S0, 0x8005D930
8005D924: ADDIU S2, S2, 0x0001
8005D928: BEQ 	R0, R0, 0x8005DE68                     ;Branch to 0x8005DE68
8005D92C: LW 	V0, 0x00CC (SP)
8005D930: SW 	R0, 0x00D0 (SP)
8005D934: LBU 	A1, 0x0000 (S2)
8005D938: JAL 	0x2A4
8005D93C: OR 	A0, S6, R0
8005D940: BEQ 	V0, R0, 0x8005D980                     ;if(V0 == 0), branch to 0x8005D980
8005D944: OR 	S0, V0, R0
8005D948: SUBU T9, S0, S6
8005D94C: SLL 	T6, T9, 0x2
8005D950: LUI 	T7, 0x8008
8005D954: ADDU T7, T7, T6
8005D958: LW 	T7, 0xE39C (T7)
8005D95C: LW 	T8, 0x00D0 (SP)
8005D960: ADDIU S2, S2, 0x0001
8005D964: OR    A0, S6, R0
8005D968: OR    T9, T8, T7
8005D96C: SW    T9, 0x00D0 (SP)
8005D970: JAL   0x2A4
8005D974: LBU   A1, 0x0000 (S2)
8005D978: BNEZ 	V0, 0x8005D948
8005D97C: OR 	S0, V0, R0
8005D980: LBU 	T6, 0x0000 (S2)
8005D984: ADDIU 	V0, R0, 0x002A
8005D988: LW 	T8, 0x00E4 (SP)
8005D98C: BNE 	V0, T6, 0x8005D9D4
8005D990: LUI 	A0, 0x8008
8005D994: ADDIU 	T7, T8, 0x0003
8005D998: ADDIU 	AT, R0, 0xFFFC
8005D99C: AND 	T9, T7, AT
8005D9A0: ADDIU 	T6, T9, 0x0004
8005D9A4: SW 	T6, 0x00E4 (SP)
8005D9A8: LW 	T8, 0x0000 (T9)
8005D9AC: ADDIU 	S2, S2, 0x0001
8005D9B0: BGEZ 	T8, 0x8005D9CC
8005D9B4: SW 	T8, 0x00C8 (SP)
8005D9B8: LW 	T6, 0x00D0 (SP)
8005D9BC: SUBU 	T7, R0, T8
8005D9C0: SW 	T7, 0x00C8 (SP)
8005D9C4: ORI 	T9, T6, 0x0004
8005D9C8: SW 	T9, 0x00D0 (SP)
8005D9CC: BEQ 	R0, R0, 0x8005DA30
8005D9D0: LBU 	A1, 0x0000 (S2)
8005D9D4: SW 	R0, 0x00C8 (SP)
8005D9D8: LBU 	A1, 0x0000 (S2)
8005D9DC: SLTI 	AT, A1, 0x0030
8005D9E0: BNEZ 	AT, 0x8005DA30
8005D9E4: SLTI 	AT, A1, 0x003A
8005D9E8: ? (20)
8005D9EC: ADDIU 	AT, R0, 0x002E
8005D9F0: LW 	T8, 0x00C8 (SP)
8005D9F4: SLTI 	AT, T8, 0x03E7
8005D9F8: ? (20)
8005D9FC: LBU 	A1, 0x0001 (S2)
8005DA00: ? (Special 0x031E0019)
8005DA04: ? (Special 0x00007812)
8005DA08: ADDU 	T6, A1, T7
8005DA0C: ADDIU 	T9, T6, 0xFFD0
8005DA10: SW 	T9, 0x00C8 (SP)
8005DA14: LBU 	A1, 0x0001 (S2)
8005DA18: ADDIU 	S2, S2, 0x0001
8005DA1C: SLTI 	AT, A1, 0x0030
8005DA20: BNEZ 	AT, 0x8005DA30
8005DA24: SLTI 	AT, A1, 0x003A
8005DA28: ? (21)
8005DA2C: LW 	T8, 0x00C8 (SP)
8005DA30: ADDIU 	AT, R0, 0x002E
8005DA34: BEQ 	A1, AT, 0x8005DA48
8005DA38: ADDIU 	T8, R0, 0xFFFF
8005DA3C: SW 	T8, 0x00C4 (SP)
8005DA40: BEQ 	R0, R0, 0x8005DADC
8005DA44: LBU 	A1, 0x0000 (S2)
8005DA48: LBU 	T7, 0x0001 (S2)
8005DA4C: LW 	T6, 0x00E4 (SP)
8005DA50: ADDIU 	S2, S2, 0x0001
8005DA54: BNE 	V0, T7, 0x8005DA80
8005DA58: ADDIU 	T9, T6, 0x0003
8005DA5C: ADDIU 	AT, R0, 0xFFFC
8005DA60: AND 	T8, T9, AT
8005DA64: ADDIU 	T7, T8, 0x0004
8005DA68: SW 	T7, 0x00E4 (SP)
8005DA6C: LW 	T6, 0x0000 (T8)
8005DA70: ADDIU 	S2, S2, 0x0001
8005DA74: SW 	T6, 0x00C4 (SP)
8005DA78: BEQ 	R0, R0, 0x8005DADC
8005DA7C: LBU 	A1, 0x0000 (S2)
8005DA80: SW 	R0, 0x00C4 (SP)
8005DA84: LBU 	A1, 0x0000 (S2)
8005DA88: SLTI 	AT, A1, 0x0030
8005DA8C: BNEZ 	AT, 0x8005DADC
8005DA90: SLTI 	AT, A1, 0x003A
8005DA94: BEQ 	AT, R0, 0x8005DADC
8005DA98: NOP
8005DA9C: LW 	T9, 0x00C4 (SP)
8005DAA0: SLTI 	AT, T9, 0x03E7
8005DAA4: ? (20)
8005DAA8: LBU 	A1, 0x0001 (S2)
8005DAAC: ? (Special 0x033E0019)
8005DAB0: ? (Special 0x00007812)
8005DAB4: ADDU 	T8, A1, T7
8005DAB8: ADDIU 	T6, T8, 0xFFD0
8005DABC: SW 	T6, 0x00C4 (SP)
8005DAC0: LBU 	A1, 0x0001 (S2)
8005DAC4: ADDIU 	S2, S2, 0x0001
8005DAC8: SLTI 	AT, A1, 0x0030
8005DACC: BNEZ 	AT, 0x8005DADC
8005DAD0: SLTI 	AT, A1, 0x003A
8005DAD4: ? (21)
8005DAD8: LW 	T9, 0x00C4 (SP)
8005DADC: JAL 	0x2A4
8005DAE0: ADDIU 	A0, A0, 0xE390

Copy Player's and CPU teams

800625D4: BEQ V0, R0, 0x80062638
800625D8: ADDIU AT, R0, 0x0001			;AT = 1
800625DC: BEQ V0, AT, 0x8006261C
800625E0: ADDIU AT, R0, 0x0002			;AT = 2
800625E4: BEQL V0, AT, 0x80062608
800625E8: LH V0, 0x0000 (A0)
800625EC: LB V0, 0x0000 (A0)
800625F0: ADDIU A0, A0, 0x0001			;A0 += 1
800625F4: ADDIU A1, A1, 0x0001			;A1 += 1
800625F8: ADDIU A2, A2, 0xFFFF			;A2 -= 1
800625FC: BEQ R0, R0, 0x80062638
80062600: SB V0, 0xFFFF (A1)
80062604: LH V0, 0x0000 (A0)
80062608: ADDIU A0, A0, 0x0002			;A0 += 2
8006260C: ADDIU A1, A1, 0x0002			;A1 += 2
80062610: ADDIU A2, A2, 0xFFFE			;A2 -= 2
80062614: BEQ R0, R0, 0x80062638
80062618: SH V0, 0xFFFE (A1)
8006261C: LB V0, 0x0000 (A0)
80062620: LH V1, 0x0001 (A0)
80062624: ADDIU A0, A0, 0x0003			;A0 += 3
80062628: ADDIU A1, A1, 0x0003			;A1 += 3
8006262C: ADDIU A2, A2, 0xFFFD			;A2 -= 3
80062630: SB V0, 0xFFFD (A1)
80062634: SH V1, 0xFFFE (A1)
80062638: SLTI AT, A2, 0x0020
8006263C: BNEL AT, R0, 0x80062698		;if(A2 < 32), branch to 0x80062698
80062640: SLTI AT, A2, 0x0010
80062644: LW V0, 0x0000 (A0)			;Load Pokémon data
80062648: LW V1, 0x0004 (A0)
8006264C: LW T0, 0x0008 (A0)
80062650: LW T1, 0x000C (A0)
80062654: LW T2, 0x0010 (A0)
80062658: LW T3, 0x0014 (A0)
8006265C: LW T4, 0x0018 (A0)
80062660: LW T5, 0x001C (A0)
80062664: ADDIU A0, A0, 0x0020			;A0 += 32
80062668: ADDIU A1, A1, 0x0020			;A1 += 32
8006266C: ADDIU A2, A2, 0xFFE0			;A2 -= 32
80062670: SW V0, 0xFFE0 (A1)			;Store Pokémon data
80062674: SW V1, 0xFFE4 (A1)
80062678: SW T0, 0xFFE8 (A1)
8006267C: SW T1, 0xFFEC (A1)
80062680: SW T2, 0xFFF0 (A1)
80062684: SW T3, 0xFFF4 (A1)
80062688: SW T4, 0xFFF8 (A1)
8006268C: BEQ R0, R0, 0x80062638		;Loop to 0x80062638
80062690: SW T5, 0xFFFC (A1)
80062694: SLTI AT, A2, 0x0010
80062698: BNEL AT, R0, 0x800626D4
8006269C: SLTI AT, A2, 0x0004
800626A0: LW V0, 0x0000 (A0)
800626A4: LW V1, 0x0004 (A0)
800626A8: LW T0, 0x0008 (A0)
800626AC: LW T1, 0x000C (A0)
800626B0: ADDIU A0, A0, 0x0010
800626B4: ADDIU A1, A1, 0x0010
800626B8: ADDIU A2, A2, 0xFFF0
800626BC: SW V0, 0xFFF0 (A1)
800626C0: SW V1, 0xFFF4 (A1)
800626C4: SW T0, 0xFFF8 (A1)
800626C8: BEQ R0, R0, 0x80062694
800626CC: SW T1, 0xFFFC (A1)
800626D0: SLTI AT, A2, 0x0004
800626D4: BNEZ AT, 0x800625AC
800626D8: NOP
800626DC: LW V0, 0x0000 (A0)
800626E0: ADDIU A0, A0, 0x0004
800626E4: ADDIU A1, A1, 0x0004
800626E8: ADDIU A2, A2, 0xFFFC
800626EC: BEQ R0, R0, 0x800626D0
800626F0: SW V0, 0xFFFC (A1)
800626F4: SLTI AT, A2, 0x0010
800626F8: ADD A0, A0, A2
800626FC: BNEZ AT, 0x80062714
80062700: ADD A1, A1, A2
80062704: ANDI V0, A0, 0x0003
80062708: ANDI V1, A1, 0x0003
8006270C: BEQ V0, V1, 0x80062744
80062710: NOP
80062714: BEQ A2, R0, 0x800625CC
80062718: NOP
8006271C: ADDIU A0, A0, 0xFFFF
80062720: ADDIU A1, A1, 0xFFFF
80062724: SUBU V1, A0, A2
80062728: LB V0, 0x0000 (A0)
8006272C: ADDIU A0, A0, 0xFFFF
80062730: ADDIU A1, A1, 0xFFFF
80062734: BNE A0, V1, 0x80062728
80062738: SB V0, 0x0001 (A1)
8006273C: JR RA
80062740: OR V0, A3, R0

0x80062744

80062744: BEQ V0, R0, 0x800627A8
80062748: ADDIU AT, R0, 0x0003          ;AT = 3
8006274C: BEQ V0, AT, 0x8006278C
80062750: ADDIU AT, R0, 0x0002
80062754: BEQL V0, AT, 0x80062778
80062758: LH V0, 0xFFFE (A0)
8006275C: LB V0, 0xFFFF (A0)
80062760: ADDIU A0, A0, 0xFFFF
80062764: ADDIU A1, A1, 0xFFFF
80062768: ADDIU A2, A2, 0xFFFF
8006276C: BEQ R0, R0, 0x800627A8
80062770: SB V0, 0x0000 (A1)
80062774: LH V0, 0xFFFE (A0)
80062778: ADDIU A0, A0, 0xFFFE
8006277C: ADDIU A1, A1, 0xFFFE
80062780: ADDIU A2, A2, 0xFFFE
80062784: BEQ R0, R0, 0x800627A8
80062788: SH V0, 0x0000 (A1)
8006278C: LB V0, 0xFFFF (A0)
80062790: LH V1, 0xFFFD (A0)
80062794: ADDIU A0, A0, 0xFFFD
80062798: ADDIU A1, A1, 0xFFFD
8006279C: ADDIU A2, A2, 0xFFFD
800627A0: SB V0, 0x0002 (A1)
800627A4: SH V1, 0x0000 (A1)
800627A8: SLTI AT, A2, 0x0020
800627AC: BNEL AT, R0, 0x80062808
800627B0: SLTI AT, A2, 0x0010
800627B4: LW V0, 0xFFFC (A0)
800627B8: LW V1, 0xFFF8 (A0)
800627BC: LW T0, 0xFFF4 (A0)
800627C0: LW T1, 0xFFF0 (A0)
800627C4: LW T2, 0xFFEC (A0)
800627C8: LW T3, 0xFFE8 (A0)
800627CC: LW T4, 0xFFE4 (A0)
800627D0: LW T5, 0xFFE0 (A0)
800627D4: ADDIU A0, A0, 0xFFE0
800627D8: ADDIU A1, A1, 0xFFE0
800627DC: ADDIU A2, A2, 0xFFE0
800627E0: SW V0, 0x001C (A1)
800627E4: SW V1, 0x0018 (A1)
800627E8: SW T0, 0x0014 (A1)
800627EC: SW T1, 0x0010 (A1)
800627F0: SW T2, 0x000C (A1)
800627F4: SW T3, 0x0008 (A1)
800627F8: SW T4, 0x0004 (A1)
800627FC: BEQ R0, R0, 0x800627A8
80062800: SW T5, 0x0000 (A1)
80062804: SLTI AT, A2, 0x0010
80062808: BNEL AT, R0, 0x80062844
8006280C: SLTI AT, A2, 0x0004
80062810: LW V0, 0xFFFC (A0)
80062814: LW V1, 0xFFF8 (A0)
80062818: LW T0, 0xFFF4 (A0)
8006281C: LW T1, 0xFFF0 (A0)
80062820: ADDIU A0, A0, 0xFFF0
80062824: ADDIU A1, A1, 0xFFF0
80062828: ADDIU A2, A2, 0xFFF0
8006282C: SW V0, 0x000C (A1)
80062830: SW V1, 0x0008 (A1)
80062834: SW T0, 0x0004 (A1)
80062838: BEQ R0, R0, 0x80062804
8006283C: SW T1, 0x0000 (A1)
80062840: SLTI AT, A2, 0x0004
80062844: BNEZ AT, 0x80062714
80062848: NOP
8006284C: LW V0, 0xFFFC (A0)
80062850: ADDIU A0, A0, 0xFFFC
80062854: ADDIU A1, A1, 0xFFFC
80062858: ADDIU A2, A2, 0xFFFC
8006285C: BEQ R0, R0, 0x80062840
80062860: SW V0, 0x0000 (A1)
80062864: NOP
80062868: NOP
8006286C: NOP
80062870: ADDIU SP, SP, 0xFFD8
80062874: SW RA, 0x001C (SP)
80062878: SW A0, 0x0028 (SP)
8006287C: JAL 0x80062A90
80062880: SW S0, 0x0018 (SP)
80062884: LW T7, 0x0028 (SP)
80062888: LUI T6, 0x8008
8006288C: LW T6, 0x96B0 (T6)
80062890: ADDIU AT, R0, 0xFBFE
80062894: AND T8, T7, AT
80062898: NOR T9, T8, R0
8006289C: OR S0, V0, R0
800628A0: LUI AT, 0x8008
800628A4: AND T0, T6, T9
800628A8: SW T0, 0x96B0 (AT)
800628AC: JAL 0x80062B00
800628B0: OR A0, S0, R0
800628B4: LW RA, 0x001C (SP)
800628B8: LW S0, 0x0018 (SP)
800628BC: ADDIU SP, SP, 0x0028
800628C0: JR RA
800628C4: NOP

0x80062A90

80062A90: LUI T2, 0x8008
80062A94: ADDIU T2, T2, 0x96B0         ;T2 = 0x800796B0
80062A98: LW T3, 0x0000 (T2)           ;T3 = (0x800796B0)
80062A9C: ANDI T3, T3, 0xFF00
80062AA0: MFC0 T0, Status
80062AA4: ADDIU AT, R0, 0xFFFE
80062AA8: AND T1, T0, AT
80062AAC: MTC0 T1, Status
80062AB0: ANDI V0, T0, 0x0001
80062AB4: LW T0, 0x0000 (T2)
80062AB8: ANDI T0, T0, 0xFF00
80062ABC: BEQ T0, T3, 0x80062AF8
80062AC0: LUI T2, 0x8008
80062AC4: ADDIU T2, T2, 0x9630
80062AC8: LW T1, 0x0118 (T2)
80062ACC: ANDI T2, T1, 0xFF00
80062AD0: AND T2, T2, T0
80062AD4: LUI AT, 0xFFFF
80062AD8: ORI AT, AT, 0x00FF
80062ADC: AND T1, T1, AT
80062AE0: OR T1, T1, T2
80062AE4: ADDIU AT, R0, 0xFFFE
80062AE8: AND T1, T1, AT
80062AEC: MTC0 T1, Status
80062AF0: NOP
80062AF4: NOP
80062AF8: JR RA
80062AFC: NOP

Pokémon Types & Moves handling #2

Pokémon Base data

  • 0x71BA0 - Pokémon base data (23 bytes each)
id bs bs bs bs bs t1 t2 cr ex m1 m2 m3 m4 gr tm
tm tm tm tm tm tm 00
id - Pokédex ID
bs - Base Stats
t1 - Type 1
t2 - Type 2
cr - Catch Rate
ex - Base Experience
m1 - Starting Move 1
m2 - Starting Move 2
m3 - Starting Move 3
m4 - Starting Move 4
gr - Growth Rate
tm - TM flags

Moves color, Type icon, pointers

  • 0x72F38 - 0x736F3 - List of type icon IDs and color pointers to display the moves on the Pokémon selection screen
aa bb 00 cc dd dd dd dd ee ee ee ee
aa - Move ID
bb - Type ID
cc - ?
dd - Pointer to ?
ee - Pointer to ?
01 00 00 00 80 07 B6 20 80 07 1E 10 02 00 00 00 80 07 B6 28 80 07 1E 18 03 00 00 00 80 07 B6 30 80 07 1E 20 04 00 00 00 80 07 B6 38 80 07 1E 28 05 00 00 00 80 07 B6 40 80 07 1E 30 06 00 00 00 80 07 B6 48 80 07 1E 38 07 09 00 00 80 07 B6 50 80 07 1E 40 08 0E 00 00 80 07 B6 58 80 07 1E 48 09 0C 00 00 80 07 B6 60 80 07 1E 50 0A 00 00 05 80 07 B6 68 80 07 1E 58 0B 00 00 00 80 07 B6 70 80 07 1E 60 0C 00 00 00 80 07 B6 78 80 07 1E 68 0D 00 00 00 80 07 B6 80 80 07 1E 70 0E 00 00 00 80 07 B6 88 80 07 1E 78 0F 00 00 00 80 07 B6 90 80 07 1E 80 10 00 00 00 80 07 B6 98 80 07 1E 88 11 02 00 00 80 07 B6 A0 80 07 1E 90 12 00 00 00 80 07 B6 A8 80 07 1E 98 13 02 00 00 80 07 B6 B0 80 07 1E A0 14 00 00 00 80 07 B6 B8 80 07 1E A8 15 00 00 00 80 07 B6 C0 80 07 1E B0 16 0B 00 00 80 07 B6 C8 80 07 1E B8 17 00 00 00 80 07 B6 D0 80 07 1E C0 18 01 00 00 80 07 B6 D8 80 07 1E C8 19 00 00 06 80 07 B6 E0 80 07 1E D0 1A 01 00 00 80 07 B6 E8 80 07 1E D8 1B 01 00 00 80 07 B6 F0 80 07 1E E0 1C 00 00 00 80 07 B6 F8 80 07 1E E8 1D 00 00 00 80 07 B7 00 80 07 1E F0 1E 00 00 00 80 07 B7 08 80 07 1E F8 1F 00 00 00 80 07 B7 10 80 07 1F 00 20 00 00 00 80 07 B7 18 80 07 1F 08 21 00 00 00 80 07 B7 20 80 07 1F 10 22 00 00 07 80 07 B7 28 80 07 1F 18 23 00 00 00 80 07 B7 30 80 07 1F 20 24 00 00 00 80 07 B7 38 80 07 1F 28 25 00 00 00 80 07 B7 40 80 07 1F 30 26 00 00 00 80 07 B7 48 80 07 1F 38 27 00 00 00 80 07 B7 50 80 07 1F 40 28 03 00 00 80 07 B7 58 80 07 1F 48 29 07 00 00 80 07 B7 60 80 07 1F 50 2A 07 00 00 80 07 B7 68 80 07 1F 58 2B 00 00 00 80 07 B7 70 80 07 1F 60 2C 00 00 00 80 07 B7 78 80 07 1F 68 2D 00 00 00 80 07 B7 80 80 07 1F 70 2E 00 00 00 80 07 B7 88 80 07 1F 78 2F 00 00 00 80 07 B7 90 80 07 1F 80 30 00 00 00 80 07 B7 98 80 07 1F 88 31 00 00 00 80 07 B7 A0 80 07 1F 90 32 00 00 00 80 07 B7 A8 80 07 1F 98 33 03 00 00 80 07 B7 B0 80 07 1F A0 34 09 00 00 80 07 B7 B8 80 07 1F A8 35 09 00 04 80 07 B7 C0 80 07 1F B0 36 0E 00 00 80 07 B7 C8 80 07 1F B8 37 0A 00 00 80 07 B7 D0 80 07 1F C0 38 0A 00 0A 80 07 B7 D8 80 07 1F C8 39 0A 00 00 80 07 B7 E0 80 07 1F D0 3A 0E 00 00 80 07 B7 E8 80 07 1F D8 3B 0E 00 00 80 07 B7 F0 80 07 1F E0 3C 0D 00 00 80 07 B7 F8 80 07 1F E8 3D 0A 00 05 80 07 B8 00 80 07 1F F0 3E 0E 00 00 80 07 B8 08 80 07 1F F8 3F 00 00 00 80 07 B8 10 80 07 20 00 40 02 00 00 80 07 B8 18 80 07 20 08 41 02 00 00 80 07 B8 20 80 07 20 10 42 01 00 00 80 07 B8 28 80 07 20 18 43 01 00 00 80 07 B8 30 80 07 20 20 44 01 00 00 80 07 B8 38 80 07 20 28 45 01 00 00 80 07 B8 40 80 07 20 30 46 00 00 00 80 07 B8 48 80 07 20 38 47 0B 00 00 80 07 B8 50 80 07 20 40 48 0B 00 00 80 07 B8 58 80 07 20 48 49 0B 00 00 80 07 B8 60 80 07 20 50 4A 00 00 00 80 07 B8 68 80 07 20 58 4B 0B 00 00 80 07 B8 70 80 07 20 60 4C 0B 00 00 80 07 B8 78 80 07 20 68 4D 03 00 00 80 07 B8 80 80 07 20 70 4E 0B 00 00 80 07 B8 88 80 07 20 78 4F 0B 00 00 80 07 B8 90 80 07 20 80 50 0B 00 00 80 07 B8 98 80 07 20 88 51 07 00 00 80 07 B8 A0 80 07 20 90 52 0F 00 00 80 07 B8 A8 80 07 20 98 53 09 00 04 80 07 B8 B0 80 07 20 A0 54 0C 00 00 80 07 B8 B8 80 07 20 A8 55 0C 00 00 80 07 B8 C0 80 07 20 B0 56 0C 00 00 80 07 B8 C8 80 07 20 B8 57 0C 00 00 80 07 B8 D0 80 07 20 C0 58 05 00 00 80 07 B8 D8 80 07 20 C8 59 04 00 00 80 07 B8 E0 80 07 20 D0 5A 04 00 00 80 07 B8 E8 80 07 20 D8 5B 04 00 00 80 07 B8 F0 80 07 20 E0 5C 03 00 00 80 07 B8 F8 80 07 20 E8 5D 0D 00 00 80 07 B9 00 80 07 20 F0 5E 0D 00 00 80 07 B9 08 80 07 20 F8 5F 0D 00 00 80 07 B9 10 80 07 21 00 60 0D 00 00 80 07 B9 18 80 07 21 08 61 0D 00 00 80 07 B9 20 80 07 21 10 62 00 00 00 80 07 B9 28 80 07 21 18 63 00 00 00 80 07 B9 30 80 07 21 20 64 0D 00 00 80 07 B9 38 80 07 21 28 65 08 00 00 80 07 B9 40 80 07 21 30 66 00 00 00 80 07 B9 48 80 07 21 38 67 00 00 00 80 07 B9 50 80 07 21 40 68 00 00 00 80 07 B9 58 80 07 21 48 69 00 00 00 80 07 B9 60 80 07 21 50 6A 00 00 00 80 07 B9 68 80 07 21 58 6B 00 00 00 80 07 B9 70 80 07 21 60 6C 00 00 00 80 07 B9 78 80 07 21 68 6D 08 00 00 80 07 B9 80 80 07 21 70 6E 0A 00 00 80 07 B9 88 80 07 21 78 6F 00 00 00 80 07 B9 90 80 07 21 80 70 0D 00 00 80 07 B9 98 80 07 21 88 71 0D 00 00 80 07 B9 A0 80 07 21 90 72 0E 00 00 80 07 B9 A8 80 07 21 98 73 0D 00 00 80 07 B9 B0 80 07 21 A0 74 00 00 00 80 07 B9 B8 80 07 21 A8 75 00 00 00 80 07 B9 C0 80 07 21 B0 76 00 00 00 80 07 B9 C8 80 07 21 B8 77 02 00 00 80 07 B9 D0 80 07 21 C0 78 00 00 00 80 07 B9 D8 80 07 21 C8 79 00 00 00 80 07 B9 E0 80 07 21 D0 7A 08 00 00 80 07 B9 E8 80 07 21 D8 7B 03 00 00 80 07 B9 F0 80 07 21 E0 7C 03 00 00 80 07 B9 F8 80 07 21 E8 7D 04 00 00 80 07 BA 00 80 07 21 F0 7E 09 00 00 80 07 BA 08 80 07 21 F8 7F 0A 00 00 80 07 BA 10 80 07 22 00 80 0A 00 00 80 07 BA 18 80 07 22 08 81 00 00 00 80 07 BA 20 80 07 22 10 82 00 00 00 80 07 BA 28 80 07 22 18 83 00 00 00 80 07 BA 30 80 07 22 20 84 00 00 00 80 07 BA 38 80 07 22 28 85 0D 00 00 80 07 BA 40 80 07 22 30 86 0D 00 00 80 07 BA 48 80 07 22 38 87 00 00 00 80 07 BA 50 80 07 22 40 88 01 00 00 80 07 BA 58 80 07 22 48 89 00 00 00 80 07 BA 60 80 07 22 50 8A 0D 00 00 80 07 BA 68 80 07 22 58 8B 03 00 00 80 07 BA 70 80 07 22 60 8C 00 00 00 80 07 BA 78 80 07 22 68 8D 07 00 00 80 07 BA 80 80 07 22 70 8E 00 00 00 80 07 BA 88 80 07 22 78 8F 02 00 00 80 07 BA 90 80 07 22 80 90 00 00 00 80 07 BA 98 80 07 22 88 91 0A 00 00 80 07 BA A0 80 07 22 90 92 00 00 00 80 07 BA A8 80 07 22 98 93 0B 00 00 80 07 BA B0 80 07 22 A0 94 00 00 00 80 07 BA B8 80 07 22 A8 95 0D 00 00 80 07 BA C0 80 07 22 B0 96 00 00 00 80 07 BA C8 80 07 22 B8 97 03 00 00 80 07 BA D0 80 07 22 C0 98 0A 00 00 80 07 BA D8 80 07 22 C8 99 00 00 00 80 07 BA E0 80 07 22 D0 9A 00 00 00 80 07 BA E8 80 07 22 D8 9B 04 00 00 80 07 BA F0 80 07 22 E0 9C 0D 00 00 80 07 BA F8 80 07 22 E8 9D 05 00 00 80 07 BB 00 80 07 22 F0 9E 00 00 00 80 07 BB 08 80 07 22 F8 9F 00 00 00 80 07 BB 10 80 07 23 00 A0 00 00 00 80 07 BB 18 80 07 23 08 A1 00 00 00 80 07 BB 20 80 07 23 10 A2 00 00 00 80 07 BB 28 80 07 23 18 A3 00 00 00 80 07 BB 30 80 07 23 20 A4 00 00 00 80 07 BB 38 80 07 23 28 A5 00 00 00 80 07 BB 40 80 07 23 30

Moves data

  • 0x73700 - 0x73ADD - Moves data
aa bb cc dd ee ff
aa - Move ID
bb - Move Effect
cc - Move Power
dd - Move Type
ee - Move Accuracy
ff - Move PP
01 00 28 00 FF 23 02 00 32 00 FF 19 03 1D 0F 00 D8 0A 04 1D 12 00 D8 0F 05 00 50 00 D8 14 06 10 28 00 FF 14 07 04 4B 14 FF 0F 08 05 4B 19 FF 0F 09 06 4B 17 FF 0F 0A 00 28 00 FF 23 0B 00 37 00 FF 1E 0C 26 01 00 4C 05 0D 27 50 00 BF 0A 0E 32 00 00 FF 1E 0F 00 32 00 F2 1E 10 00 28 00 FF 23 11 00 23 02 FF 23 12 1C 00 00 D8 14 13 2B 46 02 F2 0F 14 2A 0F 00 BF 14 15 00 50 00 BF 14 16 00 23 16 FF 0A 17 25 41 00 FF 14 18 2C 1E 01 FF 1E 19 00 78 00 BF 05 1A 2D 46 01 F2 19 1B 25 3C 01 D8 0F 1C 16 00 00 FF 0F 1D 25 46 00 FF 0F 1E 00 41 00 FF 19 1F 1D 0F 00 D8 14 20 26 01 00 4C 05 21 00 23 00 F2 23 22 24 55 00 FF 0F 23 2A 0F 00 D8 14 24 30 5A 00 D8 14 25 1B 5A 00 FF 14 26 30 64 00 FF 0F 27 13 00 00 FF 1E 28 02 0F 03 FF 23 29 4D 19 07 FF 14 2A 1D 0E 07 D8 14 2B 13 00 00 FF 1E 2C 1F 3C 00 FF 19 2D 12 00 00 FF 28 2E 1C 00 00 FF 14 2F 20 00 00 8C 0F 30 31 00 00 8C 14 31 29 01 00 E5 14 32 56 00 00 8C 14 33 45 28 03 FF 1E 34 04 28 14 FF 19 35 04 5F 14 FF 0F 36 2E 00 19 FF 1E 37 00 28 15 FF 19 38 00 78 15 CC 05 39 00 5F 15 FF 0F 3A 05 5F 19 FF 0A 3B 23 78 19 E5 05 3C 4C 41 18 FF 14 3D 46 41 15 FF 14 3E 44 41 19 FF 14 3F 50 96 00 E5 05 40 00 23 02 FF 23 41 00 50 02 FF 14 42 30 50 01 CC 19 43 25 32 01 E5 14 44 00 01 01 FF 14 45 29 01 01 FF 14 46 00 50 00 FF 0F 47 03 14 16 FF 14 48 03 28 16 FF 0A 49 54 00 16 E5 0A 4A 0D 00 00 FF 28 4B 00 37 16 F2 19 4C 27 78 16 FF 0A 4D 42 00 03 BF 23 4E 43 00 16 BF 1E 4F 20 00 16 BF 0F 50 1B 46 16 FF 14 51 14 00 07 F2 28 52 29 01 1A FF 0A 53 2A 0F 14 B2 0F 54 06 28 17 FF 1E 55 06 5F 17 FF 0F 56 43 00 17 FF 14 57 06 78 17 B2 0A 58 00 32 05 A5 0F 59 00 64 04 FF 0A 5A 26 01 04 4C 05 5B 27 64 04 FF 0A 5C 42 00 03 D8 0A 5D 4C 32 18 FF 19 5E 47 5A 18 FF 0A 5F 20 00 18 99 14 60 0A 00 18 FF 28 61 34 00 18 FF 1E 62 00 28 00 FF 1E 63 51 14 00 FF 14 64 1C 00 18 FF 14 65 29 00 08 FF 0F 66 52 00 00 FF 0A 67 3B 00 00 D8 28 68 0F 00 00 FF 0F 69 38 00 00 FF 14 6A 0B 00 00 FF 1E 6B 0F 00 00 FF 14 6C 16 00 00 FF 14 6D 31 00 08 FF 0A 6E 0B 00 15 FF 28 6F 0B 00 00 FF 28 70 33 00 18 FF 1E 71 40 00 18 FF 1E 72 19 00 19 FF 1E 73 41 00 18 FF 14 74 2F 00 00 FF 1E 75 1A 00 00 FF 0A 76 53 00 00 FF 0A 77 09 00 02 FF 14 78 07 82 00 FF 05 79 00 64 00 BF 0A 7A 24 14 08 FF 1E 7B 21 14 03 B2 14 7C 21 41 03 FF 14 7D 1F 41 04 D8 14 7E 22 78 14 D8 05 7F 00 50 15 FF 0F 80 2A 23 15 BF 0A 81 11 3C 00 FF 14 82 27 64 00 FF 0F 83 1D 14 00 FF 0F 84 46 0A 00 FF 23 85 35 00 18 FF 14 86 16 00 18 CC 0F 87 38 00 00 FF 0A 88 2D 55 01 E5 14 89 43 00 00 BF 1E 8A 08 64 18 FF 0F 8B 42 00 03 8C 28 8C 1D 0F 00 D8 14 8D 03 14 07 FF 0F 8E 20 00 00 BF 0A 8F 27 8C 02 E5 05 90 39 00 00 FF 0A 91 46 14 15 FF 1E 92 00 46 00 FF 0A 93 20 00 16 FF 0F 94 16 00 00 B2 14 95 29 01 18 CC 0F 96 55 00 00 FF 28 97 33 00 03 FF 28 98 00 5A 15 D8 0A 99 07 AA 00 FF 05 9A 1D 12 00 CC 0F 9B 2C 32 04 E5 0A 9C 38 00 18 FF 0A 9D 00 4B 05 E5 0A 9E 1F 50 00 E5 0F 9F 0A 00 00 FF 1E A0 18 00 00 FF 1E A1 00 50 00 FF 0A A2 28 01 00 E5 0A A3 00 46 00 FF 14 A4 4F 00 00 FF 0A A5 30 32 00 FF 0A

TM HM list

  • 0x73E30 - TM / HM list
05 0D 0E 12 19 5C 20 22 24 26 3D 37 3A 3B 3F 06
42 44 45 63 48 4C 52 55 57 59 5A 5B 5E 64 66 68
73 75 76 78 79 7E 81 82 87 8A 8F 9C 56 95 99 9D
A1 A4 0F 13 39 46 94

Pokémon models data offsets

  • 0x767D0 - Pokémon models data offsets
00 00 00 00 00 00 0B 90 00 00 17 20 00 00 22 B0
00 00 2E 40 00 00 39 D0 00 00 45 60 00 00 50 F0
00 00 5C 80 00 00 68 10 00 00 73 A0 00 00 7F 30
00 00 8A C0 00 00 96 50 00 00 A1 E0 00 00 AD 70
00 00 B9 00 00 00 C4 90 00 00 D0 20 00 00 DB B0
00 00 E7 40 00 00 F2 D0 00 00 FE 60 00 01 09 F0
00 01 15 80 00 01 21 10 00 01 2C A0 00 01 38 30
00 01 43 C0 00 01 4F 50 00 01 5A E0 00 01 66 70
00 01 72 00 00 01 7D 90 00 01 89 20 00 01 94 B0
00 01 A0 40 00 01 AB D0 00 01 B7 60 00 01 C2 F0
00 01 CE 80 00 01 DA 10 00 01 E5 A0 00 01 F1 30
00 01 FC C0 00 02 08 50 00 02 13 E0 00 02 1F 70
00 02 2B 00 00 02 36 90 00 02 42 20 00 02 4D B0
00 02 59 40 00 02 64 D0 00 02 70 60 00 02 7B F0
00 02 87 80 00 02 93 10 00 02 9E A0 00 02 AA 30
00 02 B5 C0 00 02 C1 50 00 02 CC E0 00 02 D8 70
00 02 E4 00 00 02 EF 90 00 02 FB 20 00 03 06 B0
00 03 12 40 00 03 1D D0 00 03 29 60 00 03 34 F0
00 03 40 80 00 03 4C 10 00 03 57 A0 00 03 63 30
00 03 6E C0 00 03 7A 50 00 03 85 E0 00 03 91 70
00 03 9D 00 00 03 A8 90 00 03 B4 20 00 03 BF B0
00 03 CB 40 00 03 D6 D0 00 03 E2 60 00 03 ED F0
00 03 F9 80 00 04 05 10 00 04 10 A0 00 04 1C 30
00 04 27 C0 00 04 33 50 00 04 3E E0 00 04 4A 70
00 04 56 00 00 04 61 90 00 04 6D 20 00 04 78 B0
00 04 84 40 00 04 8F D0 00 04 9B 60 00 04 A6 F0
00 04 B2 80 00 04 BE 10 00 04 C9 A0 00 04 D5 30
00 04 E0 C0 00 04 EC 50 00 04 F7 E0 00 05 03 70
00 05 0F 00 00 05 1A 90 00 05 26 20 00 05 31 B0
00 05 3D 40 00 05 48 D0 00 05 54 60 00 05 5F F0
00 05 6B 80 00 05 77 10 00 05 82 A0 00 05 8E 30
00 05 99 C0 00 05 A5 50 00 05 B0 E0 00 05 BC 70
00 05 C8 00 00 05 D3 90 00 05 DF 20 00 05 EA B0
00 05 F6 40 00 06 01 D0 00 06 0D 60 00 06 18 F0
00 06 24 80 00 06 30 10 00 06 3B A0 00 06 47 30
00 06 52 C0 00 06 5E 50 00 06 69 E0 00 06 75 70
00 06 81 00 00 06 8C 90 00 06 98 20 00 06 A3 B0
00 06 AF 40 00 06 BA D0 00 06 C6 60 00 06 D1 F0
00 06 DD 80

Pokémon Types handling

  • 0x7D790 - Pointers to either specific instructions + JR RA for valid Types, or to 0x434F0 for invalid Types
80 04 28 78	// Normal
80 04 28 A8	// Fighting
80 04 28 C0	// Flying
80 04 28 B0	// Poison
80 04 28 B8	// Ground
80 04 28 D8	// Rock
80 04 28 F0	// Bird (Invalid)
80 04 28 D0	// Bug
80 04 28 E0	// Ghost
80 04 28 F0
80 04 28 F0
80 04 28 F0
80 04 28 F0
80 04 28 F0
80 04 28 F0
80 04 28 F0
80 04 28 F0
80 04 28 F0
80 04 28 F0
80 04 28 F0
80 04 28 80	// Fire
80 04 28 88	// Water
80 04 28 98	// Grass
80 04 28 90	// Electric
80 04 28 C8	// Psychic
80 04 28 A0	// Ice
80 04 28 E8	// Dragon

GB Tower text

  • 0x8D6C0
POKEMON RED
POKEMON GREEN
POKEMON BLUE
POKEMON YELLOW
  • 0x8E010
Menu
Continue Game
Quit Game
Help & Config
Exit this Menu and continue with the Game Boy POKéMON
Quit Game Boy POKéMON and return to POKéMON STADIUM
The START and SELECT settings may be changed
Game saved?
Is it OK to quit?
Yes
No
Button: Double Speed
Press once to double POKéMON's play speed
Button: Double Speed
Each time you press [C button], the POKéMON game's speed changes
Config
Button: Cancel
Unable to SAVE
Leaving your N64 turned ON, detach the GB Game Pak, clean the connector section and re-attach it
The GB Game Pak or the data has been changed

Debug Text 1

  • 0x8E320
%x %x %x
Audio:
Memory:
Heap OverFlow : Not Allocate %d!
%x %x %x
Audio:
Memory:
Heap OverFlow : Not Allocate %d!
Clear Workarea %x -%x size %x
Heap %x %x %x
  • 0xAA900
Loop Occer
Sound 0x21 = Gain %x Sign %x Step %x  
Sound 0x22 = %d %d %d 
Sound 0x23  Vol %d (Reset Counter)
Dmg Noise pitch :  %x  Vol %d
AudioReset : Reload Noisetable Finish
AudioStart : Noisetable %x
AudioExit  : Reload Noisetable 
DAC:Lost 1 Frame
Address Error %x

Graphics 1

Kids Club

  • 0x10E78F-0x116A0F - P1 / P2 / P3 / P4 / COM pictures

Kids Club data

  • 0x1225E2 - Magikarp's Splash - points per hit
  • 0x12ABCA - Clefairy Says - damage per hit

Graphics 2

Kids Club

  • 0x13F66E-0x141E6D - Thundering Dynamo: green and blue lights
  • 0x16BE6D - ? (the second one is probably water texture)
  • 0x17526D - Ekans Hoop Hurl: Dugtrio panels
  • 0x179AA7 - Five colored lights ?
  • 0x18389F - Rocky texture ?

Fuchsia City Gym ?

  • 0x18809F - A Weezing ?
  • 0x18989F - Sludge background (probably for Fuchsia City Gym)
  • 0x18A89F - Sky texture
  • 0x18C09F - Rocky texture ?
  • 0x18C89F - ?
  • 0x18D89F - Three holes

Pokémon Lab

  • 0x193EF7 - Professor Oak sprite, 18×18 tiles
  • 0x1A5687 - Pokémon prize Poké Ball
  • 0x1C07B1 - Pokémon Computer icons
  • 0x1C7307 - L R buttons
  • 0x1C9239 - N64 cartridge
  • 0x1CA5B7 - GB cartridges
  • 0x1CC339 - Poké Ball background
  • 0x1E62F9 - L R buttons
  • 0x1E72F9 - Poké Ball background
  • 0x1E822F - B button (cancel)
  • 0x1FD287 - A C Start buttons
  • 0x1FF3ED - Types (moveset display)
  • 0x20235F - Computer background #1 (57×32 tiles)
  • 0x21CB41 - Computer background #2 (32×32 tiles)
  • 0x2349C1 - ?
  • 0x237B51 - Some icon ?
  • 0x2383AB - Red text bubble
  • 0x238FB7 - Gray background with hard to read gray text

Miscellaneous

  • 0x2BA0A1 - Gold and silver Poké Ball background

Display Pokémon data on Pokémon selection menu

  • 0x2E315C - Retrieve Move type icon, color pointer, another pointer (no idea what it is at the moment), C buttons, Pokémon stats, Pokémon 3D model, then display the retrieved data
8015053C: ADDIU SP, SP, 0xFF58
80150540: SW RA, 0x0044 (SP)
80150544: SW S6, 0x0040 (SP)
80150548: SW S5, 0x003C (SP)
8015054C: SW S4, 0x0038 (SP)
80150550: SW S3, 0x0034 (SP)
80150554: SW S2, 0x0030 (SP)
80150558: SW S1, 0x002C (SP)
8015055C: SW S0, 0x0028 (SP)
80150560: SW A1, 0x00AC (SP)
80150564: LBU T6, 0x0000 (A0)
80150568: LW S6, 0x002C (A0)
8015056C: OR S0, A0, R0
80150570: LH S4, 0x0006 (A0)
80150574: LH S5, 0x0008 (A0)
80150578: BEQ T6, R0, 0x80150FA8
8015057C: ADDIU S6, S6, 0x0004
80150580: SLL A0, S4, 0x10
80150584: SLL A1, S5, 0x10
80150588: LH A2, 0x000A (S0)
8015058C: LH A3, 0x000C (S0)
80150590: SW S0, 0x00A8 (SP)
80150594: SRA A1, A1, 0x10
80150598: JAL 0x80144E28
8015059C: SRA A0, A0, 0x10
801505A0: LW T0, 0x00A8 (SP)
801505A4: ADDIU AT, R0, 0x0228
801505A8: LH T7, 0x000A (T0)
801505AC: BNEL T7, AT, 0x80150FAC
801505B0: LW RA, 0x0044 (SP)
801505B4: LH T8, 0x000C (T0)
801505B8: ADDIU AT, R0, 0x00CC
801505BC: BNEL T8, AT, 0x80150FAC
801505C0: LW RA, 0x0044 (SP)
801505C4: LW V0, 0x002C (T0)
801505C8: ADDIU AT, R0, 0x0004
801505CC: LBU T9, 0x0000 (V0)
801505D0: BNE T9, AT, 0x80150630
801505D4: ADDIU S2, S4, 0x0004
801505D8: ADDIU S0, S5, 0x0004
801505DC: SLL S0, S0, 0x10
801505E0: SLL S2, S2, 0x10
801505E4: SRA S2, S2, 0x10
801505E8: SRA S0, S0, 0x10
801505EC: SLL A1, S0, 0x10
801505F0: SLL A0, S2, 0x10
801505F4: ADDIU T2, R0, 0x00AA
801505F8: ADDIU T3, R0, 0x003C
801505FC: ADDIU T4, R0, 0x0096
80150600: ADDIU T5, R0, 0x00FF
80150604: SW T5, 0x001C (SP)
80150608: SW T4, 0x0018 (SP)
8015060C: SW T3, 0x0014 (SP)
80150610: SW T2, 0x0010 (SP)
80150614: SRA A0, A0, 0x10
80150618: SRA A1, A1, 0x10
8015061C: ADDIU A2, R0, 0x0190
80150620: JAL 0x80145090
80150624: ADDIU A3, R0, 0x001C
80150628: BEQ R0, R0, 0x80150754
8015062C: ADDIU S3, S5, 0x0020
80150630: LBU V1, 0x0001 (V0)
80150634: ADDIU S2, S4, 0x0004
80150638: SLL S2, S2, 0x10
8015063C: BEQ V1, R0, 0x80150658
80150640: SRA S2, S2, 0x10
80150644: ADDIU AT, R0, 0x0009
80150648: BEQ V1, AT, 0x801506A8
8015064C: ADDIU S2, S4, 0x0004
80150650: BEQ R0, R0, 0x80150700
80150654: ADDIU S2, S4, 0x0004
80150658: ADDIU S0, S5, 0x0004
8015065C: SLL S0, S0, 0x10
80150660: SRA S0, S0, 0x10
80150664: SLL A1, S0, 0x10
80150668: SLL A0, S2, 0x10
8015066C: ADDIU T6, R0, 0x00AA
80150670: ADDIU T7, R0, 0x003C
80150674: ADDIU T8, R0, 0x003C
80150678: ADDIU T9, R0, 0x00FF
8015067C: SW T9, 0x001C (SP)
80150680: SW T8, 0x0018 (SP)
80150684: SW T7, 0x0014 (SP)
80150688: SW T6, 0x0010 (SP)
8015068C: SRA A0, A0, 0x10
80150690: SRA A1, A1, 0x10
80150694: ADDIU A2, R0, 0x0190
80150698: JAL 0x80145090
8015069C: ADDIU A3, R0, 0x001C
801506A0: BEQ R0, R0, 0x80150754
801506A4: ADDIU S3, S5, 0x0020
801506A8: ADDIU S0, S5, 0x0004
801506AC: SLL S0, S0, 0x10
801506B0: SLL S2, S2, 0x10
801506B4: SRA S2, S2, 0x10
801506B8: SRA S0, S0, 0x10
801506BC: SLL A1, S0, 0x10
801506C0: SLL A0, S2, 0x10
801506C4: ADDIU T2, R0, 0x00AA
801506C8: ADDIU T3, R0, 0x003C
801506CC: ADDIU T4, R0, 0x0096
801506D0: ADDIU T5, R0, 0x00FF
801506D4: SW T5, 0x001C (SP)
801506D8: SW T4, 0x0018 (SP)
801506DC: SW T3, 0x0014 (SP)
801506E0: SW T2, 0x0010 (SP)
801506E4: SRA A0, A0, 0x10
801506E8: SRA A1, A1, 0x10
801506EC: ADDIU A2, R0, 0x0190
801506F0: JAL 0x80145090
801506F4: ADDIU A3, R0, 0x001C
801506F8: BEQ R0, R0, 0x80150754
801506FC: ADDIU S3, S5, 0x0020
80150700: ADDIU S0, S5, 0x0004
80150704: SLL S0, S0, 0x10
80150708: SLL S2, S2, 0x10
8015070C: SRA S2, S2, 0x10
80150710: SRA S0, S0, 0x10
80150714: SLL A1, S0, 0x10
80150718: SLL A0, S2, 0x10
8015071C: ADDIU T6, R0, 0x00B4
80150720: ADDIU T7, R0, 0x008C
80150724: ADDIU T8, R0, 0x0028
80150728: ADDIU T9, R0, 0x00FF
8015072C: SW T9, 0x001C (SP)
80150730: SW T8, 0x0018 (SP)
80150734: SW T7, 0x0014 (SP)
80150738: SW T6, 0x0010 (SP)
8015073C: SRA A0, A0, 0x10
80150740: SRA A1, A1, 0x10
80150744: ADDIU A2, R0, 0x0190
80150748: JAL 0x80145090
8015074C: ADDIU A3, R0, 0x001C
80150750: ADDIU S3, S5, 0x0020
80150754: SLL S3, S3, 0x10
80150758: SRA S3, S3, 0x10
8015075C: ADDIU A0, S4, 0x0068
80150760: SLL A0, A0, 0x10
80150764: SLL A1, S3, 0x10
80150768: ADDIU T2, R0, 0x00B4
8015076C: ADDIU T3, R0, 0x00AA
80150770: ADDIU T4, R0, 0x0064
80150774: ADDIU T5, R0, 0x00FF
80150778: SW T5, 0x001C (SP)
8015077C: SW T4, 0x0018 (SP)
80150780: SW T3, 0x0014 (SP)
80150784: SW T2, 0x0010 (SP)
80150788: SRA A1, A1, 0x10
8015078C: SRA A0, A0, 0x10
80150790: ADDIU A2, R0, 0x012C
80150794: JAL 0x80145090
80150798: ADDIU A3, R0, 0x0054
8015079C: ADDIU A0, S4, 0x0194
801507A0: SLL A0, A0, 0x10
801507A4: SLL A1, S0, 0x10
801507A8: ADDIU T6, R0, 0x0032
801507AC: ADDIU T7, R0, 0x0032
801507B0: ADDIU T8, R0, 0x0082
801507B4: ADDIU T9, R0, 0x00FF
801507B8: SW T9, 0x001C (SP)
801507BC: SW T8, 0x0018 (SP)
801507C0: SW T7, 0x0014 (SP)
801507C4: SW T6, 0x0010 (SP)
801507C8: SRA A1, A1, 0x10
801507CC: SRA A0, A0, 0x10
801507D0: ADDIU A2, R0, 0x0090
801507D4: JAL 0x80145090
801507D8: ADDIU A3, R0, 0x0078
801507DC: ADDIU A1, S5, 0x0074
801507E0: SLL A1, A1, 0x10
801507E4: SLL A0, S2, 0x10
801507E8: ADDIU T2, R0, 0x00A0
801507EC: ADDIU T3, R0, 0x0096
801507F0: ADDIU T4, R0, 0x0032
801507F4: ADDIU T5, R0, 0x00FF
801507F8: SW T5, 0x001C (SP)
801507FC: SW T4, 0x0018 (SP)
80150800: SW T3, 0x0014 (SP)
80150804: SW T2, 0x0010 (SP)
80150808: SRA A0, A0, 0x10
8015080C: SRA A1, A1, 0x10
80150810: ADDIU A2, R0, 0x0220
80150814: JAL 0x80145090
80150818: ADDIU A3, R0, 0x0054
8015081C: LUI T0, 0x800A
80150820: ADDIU T0, T0, 0x7420
80150824: LW V0, 0x0000 (T0)
80150828: LUI T1, 0x8007
8015082C: ADDIU T1, T1, 0xF518
80150830: ADDIU T6, V0, 0x0008
80150834: SW T6, 0x0000 (T0)
80150838: LUI T7, 0xDE00
8015083C: ADDIU S0, S4, 0x0108
80150840: SLL S0, S0, 0x10
80150844: SW T7, 0x0000 (V0)
80150848: SW T1, 0x0004 (V0)
8015084C: SRA S0, S0, 0x10
80150850: ADDIU A1, S5, 0x0077
80150854: LUI T8, 0x0201
80150858: ADDIU T8, T8, 0x4F00
8015085C: SLL A1, A1, 0x10
80150860: SLL A0, S0, 0x10
80150864: ADDIU T9, R0, 0x001C
80150868: SW T9, 0x0014 (SP)
8015086C: SRA A0, A0, 0x10
80150870: SRA A1, A1, 0x10
80150874: SW T8, 0x0010 (SP)
80150878: SW T1, 0x005C (SP)
8015087C: SW R0, 0x0018 (SP)
80150880: ADDIU A2, R0, 0x001C
80150884: JAL 0x8001C6AC
80150888: ADDIU A3, R0, 0x001A
8015088C: ADDIU S1, S5, 0x0090
80150890: SLL S1, S1, 0x10
80150894: SRA S1, S1, 0x10
80150898: ADDIU A0, S4, 0x00F0
8015089C: LUI T2, 0x0201
801508A0: ADDIU T2, T2, 0x54B0
801508A4: SLL A0, A0, 0x10
801508A8: SLL A1, S1, 0x10
801508AC: ADDIU T3, R0, 0x001C
801508B0: SW T3, 0x0014 (SP)
801508B4: SRA A1, A1, 0x10
801508B8: SRA A0, A0, 0x10
801508BC: SW T2, 0x0010 (SP)
801508C0: ADDIU A2, R0, 0x001C
801508C4: ADDIU A3, R0, 0x001A
801508C8: JAL 0x8001C6AC
801508CC: SW R0, 0x0018 (SP)
801508D0: ADDIU A0, S4, 0x011C
801508D4: LUI T4, 0x0201
801508D8: ADDIU T4, T4, 0x6010
801508DC: SLL A0, A0, 0x10
801508E0: SLL A1, S1, 0x10
801508E4: ADDIU T5, R0, 0x001C
801508E8: SW T5, 0x0014 (SP)
801508EC: SRA A1, A1, 0x10
801508F0: SRA A0, A0, 0x10
801508F4: SW T4, 0x0010 (SP)
801508F8: ADDIU A2, R0, 0x001C
801508FC: ADDIU A3, R0, 0x001A
80150900: JAL 0x8001C6AC
80150904: SW R0, 0x0018 (SP)
80150908: ADDIU A1, S5, 0x00A9
8015090C: LUI T6, 0x0201
80150910: ADDIU T6, T6, 0x5A60
80150914: SLL A1, A1, 0x10
80150918: SLL A0, S0, 0x10
8015091C: ADDIU T7, R0, 0x001C
80150920: SW T7, 0x0014 (SP)
80150924: SRA A0, A0, 0x10
80150928: SRA A1, A1, 0x10
8015092C: SW T6, 0x0010 (SP)
80150930: ADDIU A2, R0, 0x001C
80150934: ADDIU A3, R0, 0x001A
80150938: JAL 0x8001C6AC
8015093C: SW R0, 0x0018 (SP)
80150940: LW T8, 0x00A8 (SP)
80150944: ADDIU AT, R0, 0x0004
80150948: LW V0, 0x002C (T8)
8015094C: LBU T9, 0x0000 (V0)
80150950: BEQ T9, AT, 0x801509A0
80150954: NOP
80150958: LBU T2, 0x0001 (V0)
8015095C: ADDIU AT, R0, 0x000D
80150960: ADDIU A0, S4, 0x0014
80150964: BNE T2, AT, 0x801509A0
80150968: SLL A0, A0, 0x10
8015096C: ADDIU A1, S5, 0x0078
80150970: LUI T3, 0x0201
80150974: ADDIU T3, T3, 0x6D40
80150978: SLL A1, A1, 0x10
8015097C: ADDIU T4, R0, 0x0040
80150980: SW T4, 0x0014 (SP)
80150984: SRA A1, A1, 0x10
80150988: SW T3, 0x0010 (SP)
8015098C: SRA A0, A0, 0x10
80150990: ADDIU A2, R0, 0x0040
80150994: ADDIU A3, R0, 0x0014
80150998: JAL 0x8001C6AC
8015099C: SW R0, 0x0018 (SP)
801509A0: LUI A3, 0x800A
801509A4: ADDIU A3, A3, 0x7420
801509A8: LW V0, 0x0000 (A3)
801509AC: LUI T6, 0xFC50
801509B0: LUI T7, 0x3335
801509B4: ADDIU T5, V0, 0x0008
801509B8: SW T5, 0x0000 (A3)
801509BC: ADDIU T0, S5, 0x0026
801509C0: ORI T7, T7, 0xFEFF
801509C4: ORI T6, T6, 0x9AA1
801509C8: SLL S0, T0, 0x10
801509CC: SRA S0, S0, 0x10
801509D0: ADDIU A0, S4, 0x006A
801509D4: SW T6, 0x0000 (V0)
801509D8: SW T7, 0x0004 (V0)
801509DC: LBU A2, 0x0006 (S6)
801509E0: SLL A0, A0, 0x10
801509E4: SLL A1, S0, 0x10
801509E8: SRA A1, A1, 0x10
801509EC: SRA A0, A0, 0x10
801509F0: JAL 0x80150214
801509F4: SW T0, 0x0068 (SP)
801509F8: LBU V0, 0x0007 (S6)
801509FC: LBU T8, 0x0006 (S6)
80150A00: BEQ V0, T8, 0x80150A24
80150A04: ADDIU A0, S4, 0x00BA
80150A08: SLL A0, A0, 0x10
80150A0C: SLL A1, S0, 0x10
80150A10: SLL A2, V0, 0x10
80150A14: SRA A2, A2, 0x10
80150A18: SRA A1, A1, 0x10
80150A1C: JAL 0x80150214
80150A20: SRA A0, A0, 0x10
80150A24: LUI A3, 0x800A
80150A28: ADDIU A3, A3, 0x7420
80150A2C: LW V0, 0x0000 (A3)
80150A30: LUI T0, 0x8007
80150A34: ADDIU T0, T0, 0xF630
80150A38: ADDIU T9, V0, 0x0008
80150A3C: SW T9, 0x0000 (A3)
80150A40: LUI T2, 0xDE00
80150A44: SW T2, 0x0000 (V0)
80150A48: SW T0, 0x0004 (V0)
80150A4C: LW T3, 0x00A8 (SP)
80150A50: SLL A0, S2, 0x10
80150A54: SLL A1, S3, 0x10
80150A58: LW A2, 0x0020 (T3)
80150A5C: SW T0, 0x0058 (SP)
80150A60: SRA A1, A1, 0x10
80150A64: JAL 0x8015038C
80150A68: SRA A0, A0, 0x10
80150A6C: LW T4, 0x00A8 (SP)
80150A70: SLL A0, S4, 0x10
80150A74: SLL A1, S5, 0x10
80150A78: SRA A1, A1, 0x10
80150A7C: SRA A0, A0, 0x10
80150A80: LBU A2, 0x0001 (T4)
80150A84: JAL 0x8015007C
80150A88: LBU A3, 0x0002 (T4)
80150A8C: JAL 0x8001F3F4
80150A90: NOP
80150A94: ADDIU A0, R0, 0x0008
80150A98: JAL 0x8001EBE0
80150A9C: OR A1, R0, R0
80150AA0: ADDIU S0, S5, 0x0008
80150AA4: OR A1, S0, R0
80150AA8: ADDIU A0, S4, 0x000C
80150AAC: JAL 0x8001F1E8
80150AB0: ADDIU A2, S6, 0x0030
80150AB4: ADDIU A0, R0, 0x0008
80150AB8: JAL 0x8001EBE0
80150ABC: OR A1, R0, R0
80150AC0: JAL 0x80144DD0
80150AC4: ADDIU A0, R0, 0x0015
80150AC8: LBU T5, 0x0024 (S6)
80150ACC: LUI A2, 0x8015
80150AD0: ADDIU A2, A2, 0x6690
80150AD4: ADDIU A0, S4, 0x0084
80150AD8: OR A1, S0, R0
80150ADC: OR A3, V0, R0
80150AE0: JAL 0x8001F1E8
80150AE4: SW T5, 0x0010 (SP)
80150AE8: ADDIU A0, R0, 0x0004
80150AEC: JAL 0x8001EBE0
80150AF0: OR A1, R0, R0
80150AF4: JAL 0x80144DD0
80150AF8: ADDIU A0, R0, 0x0016
80150AFC: LBU T6, 0x0000 (S6)
80150B00: ADDIU S0, S5, 0x000C
80150B04: LUI A2, 0x8015
80150B08: ADDIU A2, A2, 0x6698
80150B0C: OR A1, S0, R0
80150B10: ADDIU A0, S4, 0x00E8
80150B14: OR A3, V0, R0
80150B18: JAL 0x8001F1E8
80150B1C: SW T6, 0x0010 (SP)
80150B20: ADDIU A0, R0, 0x0004
80150B24: JAL 0x8001EBE0
80150B28: OR A1, R0, R0
80150B2C: JAL 0x80144CF8
80150B30: LBU A0, 0x0000 (S6)
80150B34: ADDIU A0, S4, 0x013C
80150B38: OR A1, S0, R0
80150B3C: JAL 0x8001F1E8
80150B40: OR A2, V0, R0
80150B44: ADDIU A0, R0, 0x0008
80150B48: JAL 0x8001EBE0
80150B4C: OR A1, R0, R0
80150B50: JAL 0x80144DD0
80150B54: ADDIU A0, R0, 0x0008
80150B58: ADDIU S0, S5, 0x005A
80150B5C: LUI A2, 0x8015
80150B60: ADDIU A2, A2, 0x66A0
80150B64: OR A1, S0, R0
80150B68: ADDIU A0, S4, 0x0076
80150B6C: JAL 0x8001F1E8
80150B70: OR A3, V0, R0
80150B74: ADDIU A0, R0, 0x0008
80150B78: JAL 0x8001EBE0
80150B7C: OR A1, R0, R0
80150B80: LUI A2, 0x8015
80150B84: ADDIU A2, A2, 0x66A4
80150B88: ADDIU A0, S4, 0x00A4
80150B8C: OR A1, S0, R0
80150B90: JAL 0x8001F1E8
80150B94: LHU A3, 0x0026 (S6)
80150B98: ADDIU A0, R0, 0x0004
80150B9C: JAL 0x8001EBE0
80150BA0: OR A1, R0, R0
80150BA4: JAL 0x80144DA0
80150BA8: ADDIU A0, R0, 0x0005
80150BAC: ADDIU S0, S4, 0x0116
80150BB0: ADDIU S1, S5, 0x0025
80150BB4: OR A1, S1, R0
80150BB8: OR A0, S0, R0
80150BBC: JAL 0x8001F1E8
80150BC0: OR A2, V0, R0
80150BC4: JAL 0x80144DA0
80150BC8: ADDIU A0, R0, 0x0006
80150BCC: ADDIU S2, S5, 0x0038
80150BD0: OR A1, S2, R0
80150BD4: OR A0, S0, R0
80150BD8: JAL 0x8001F1E8
80150BDC: OR A2, V0, R0
80150BE0: JAL 0x80144DA0
80150BE4: ADDIU A0, R0, 0x0007
80150BE8: ADDIU S3, S5, 0x004B
80150BEC: OR A1, S3, R0
80150BF0: OR A0, S0, R0
80150BF4: JAL 0x8001F1E8
80150BF8: OR A2, V0, R0
80150BFC: JAL 0x80144DA0
80150C00: ADDIU A0, R0, 0x0008
80150C04: ADDIU A1, S5, 0x005E
80150C08: SW A1, 0x004C (SP)
80150C0C: OR A0, S0, R0
80150C10: JAL 0x8001F1E8
80150C14: OR A2, V0, R0
80150C18: ADDIU A0, R0, 0x0004
80150C1C: JAL 0x8001EBE0
80150C20: OR A1, R0, R0
80150C24: ADDIU S0, S4, 0x015E
80150C28: LUI A2, 0x8015
80150C2C: ADDIU A2, A2, 0x66A8
80150C30: OR A0, S0, R0
80150C34: OR A1, S1, R0
80150C38: JAL 0x8001F1E8
80150C3C: LHU A3, 0x0028 (S6)
80150C40: LUI A2, 0x8015
80150C44: ADDIU A2, A2, 0x66AC
80150C48: OR A0, S0, R0
80150C4C: OR A1, S2, R0
80150C50: JAL 0x8001F1E8
80150C54: LHU A3, 0x002A (S6)
80150C58: LUI A2, 0x8015
80150C5C: ADDIU A2, A2, 0x66B0
80150C60: OR A0, S0, R0
80150C64: OR A1, S3, R0
80150C68: JAL 0x8001F1E8
80150C6C: LHU A3, 0x002C (S6)
80150C70: LUI A2, 0x8015
80150C74: ADDIU A2, A2, 0x66B4
80150C78: OR A0, S0, R0
80150C7C: LW A1, 0x004C (SP)
80150C80: JAL 0x8001F1E8
80150C84: LHU A3, 0x002E (S6)
80150C88: ADDIU A0, R0, 0x0004
80150C8C: JAL 0x8001EBE0
80150C90: OR A1, R0, R0
80150C94: JAL 0x80144DA0
80150C98: ADDIU A0, R0, 0x0009
80150C9C: OR S0, V0, R0
80150CA0: ADDIU A0, R0, 0x0004
80150CA4: OR A1, R0, R0
80150CA8: JAL 0x8001F5B0
80150CAC: OR A2, V0, R0
80150CB0: BGEZ V0, 0x80150CC0
80150CB4: SRA T7, V0, 0x1
80150CB8: ADDIU AT, V0, 0x0001
80150CBC: SRA T7, AT, 0x1
80150CC0: SUBU A0, S4, T7
80150CC4: ADDIU A0, A0, 0x0090
80150CC8: LW A1, 0x0068 (SP)
80150CCC: JAL 0x8001F1E8
80150CD0: OR A2, S0, R0
80150CD4: JAL 0x800219FC
80150CD8: LBU A0, 0x0006 (S6)
80150CDC: JAL 0x80144D68
80150CE0: OR A0, V0, R0
80150CE4: OR S0, V0, R0
80150CE8: ADDIU A0, R0, 0x0004
80150CEC: OR A1, R0, R0
80150CF0: JAL 0x8001F5B0
80150CF4: OR A2, V0, R0
80150CF8: BGEZ V0, 0x80150D08
80150CFC: SRA T8, V0, 0x1
80150D00: ADDIU AT, V0, 0x0001
80150D04: SRA T8, AT, 0x1
80150D08: SUBU A0, S4, T8
80150D0C: ADDIU S1, S5, 0x003A
80150D10: OR A1, S1, R0
80150D14: ADDIU A0, A0, 0x0090
80150D18: JAL 0x8001F1E8
80150D1C: OR A2, S0, R0
80150D20: LBU T9, 0x0007 (S6)
80150D24: LBU T2, 0x0006 (S6)
80150D28: BEQL T9, T2, 0x80150DBC
80150D2C: ADDIU A0, R0, 0x0008
80150D30: JAL 0x80144DA0
80150D34: ADDIU A0, R0, 0x000A
80150D38: OR S0, V0, R0
80150D3C: ADDIU A0, R0, 0x0004
80150D40: OR A1, R0, R0
80150D44: JAL 0x8001F5B0
80150D48: OR A2, V0, R0
80150D4C: BGEZ V0, 0x80150D5C
80150D50: SRA T3, V0, 0x1
80150D54: ADDIU AT, V0, 0x0001
80150D58: SRA T3, AT, 0x1
80150D5C: SUBU A0, S4, T3
80150D60: ADDIU A0, A0, 0x00E0
80150D64: LW A1, 0x0068 (SP)
80150D68: JAL 0x8001F1E8                   ;Jump to 0x8001F1E8 and link
80150D6C: OR A2, S0, R0                    ;A2 = S0
80150D70: JAL 0x800219FC                   ;Jump to 0x800219FC and link
80150D74: LBU A0, 0x0007 (S6)              ;A0 = (S6+0x7)
80150D78: JAL 0x80144D68                   ;Jump to 0x80144D68 and link
80150D7C: OR A0, V0, R0                    ;A0 = V0
80150D80: OR S0, V0, R0                    ;S0 = V0
80150D84: ADDIU A0, R0, 0x0004             ;A0 = 4
80150D88: OR A1, R0, R0                    ;A1 = 0
80150D8C: JAL 0x8001F5B0                   ;Jump to 0x8001F5B0 and link
80150D90: OR A2, V0, R0                    ;A2 = V0
80150D94: BGEZ V0, 0x80150DA4              ;if(V0 ≥ 0), branch to 0x80150DA4
80150D98: SRA T4, V0, 0x1                  ;T4 = V0 >> 1
80150D9C: ADDIU AT, V0, 0x0001             ;AT = V0 + 1
80150DA0: SRA T4, AT, 0x1                  ;T4 = AT >> 1
80150DA4: SUBU A0, S4, T4                  ;A0 = S4 - T4
80150DA8: ADDIU A0, A0, 0x00E0             ;A0 += 0xE0
80150DAC: OR A1, S1, R0                    ;A1 = S1
80150DB0: JAL 0x8001F1E8                   ;Jump to 0x8001F1E8 and link
80150DB4: OR A2, S0, R0                    ;A2 = S0
80150DB8: ADDIU A0, R0, 0x0008             ;A0 = 8
80150DBC: JAL 0x8001EBE0                   ;Jump to 0x8001EBE0 and link
80150DC0: OR A1, R0, R0                    ;A1 = 0
80150DC4: OR S0, R0, R0                    ;S0 = 0
80150DC8: ADDU S1, S6, S0                  ;S1 = S6 + S0
80150DCC: LBU A0, 0x0009 (S1)              ;A0 = (S1+0x9)
80150DD0: LUI T6, 0x8007
80150DD4: BNEZ A0, 0x80150DE4              ;if(A0 ≠ 0), branch to 0x80150DE4 (display Type icon)
80150DD8: SLL T5, A0, 0x2                  ;T5 = A0 << 2
80150DDC: BEQ R0, R0, 0x80150E88           ;Branch to 0x80150E88
80150DE0: OR S0, R0, R0                    ;S0 = 0
80150DE4: SUBU T5, T5, A0                  ;T5 -= A0
80150DE8: SLL T5, T5, 0x2                  ;T5 << 2
80150DEC: ADDU T6, T6, T5                  ;T6 += T5
80150DF0: LBU T6, 0x232D (T6)              ;T6 = Type_icon_ID
80150DF4: LUI T9, 0x8015
80150DF8: ADDIU T9, T9, 0x6260             ;T9 = 0x80156260
80150DFC: SLL T7, T6, 0x4                  ;T7 = Type_icon_ID << 4
80150E00: ADDIU T8, T7, 0x0006             ;T8 = (Type_icon_ID << 4) + 6
80150E04: JAL 0x80144D30                   ;Jump to 0x80144D30 and link
80150E08: ADDU S2, T8, T9                  ;S2 = 0x80156260 + (Type_icon_ID << 4) + 6
80150E0C: SLL S3, S0, 0x1                  ;S3 = S0 << 1
80150E10: LUI A1, 0x8015
80150E14: ADDU A1, A1, S3
80150E18: SLL A0, S0, 0x10
80150E1C: SRA A0, A0, 0x10
80150E20: LH A1, 0x6360 (A1)
80150E24: JAL 0x801504E0
80150E28: OR A2, V0, R0
80150E2C: SH V0, 0x0082 (SP)
80150E30: LBU A2, 0x0002 (S2)
80150E34: LBU A1, 0x0001 (S2)
80150E38: LBU A0, 0x0000 (S2)
80150E3C: JAL 0x8001F324
80150E40: ADDIU A3, R0, 0x00FF
80150E44: JAL 0x80144D30
80150E48: LBU A0, 0x0009 (S1)
80150E4C: LUI T3, 0x8015
80150E50: ADDU T3, T3, S3
80150E54: LH T3, 0x6368 (T3)
80150E58: LH T2, 0x0082 (SP)
80150E5C: OR A2, V0, R0
80150E60: ADDU A1, T3, S5
80150E64: JAL 0x8001F1E8
80150E68: ADDU A0, S4, T2
80150E6C: ADDIU S0, S0, 0x0001
80150E70: SLL S0, S0, 0x10
80150E74: SRA S0, S0, 0x10
80150E78: SLTI AT, S0, 0x0004
80150E7C: BNEL AT, R0, 0x80150DCC
80150E80: ADDU S1, S6, S0
80150E84: OR S0, R0, R0
80150E88: JAL 0x8001F444
80150E8C: NOP
80150E90: LUI A1, 0x800A
80150E94: ADDIU A1, A1, 0x7420
80150E98: LW V0, 0x0000 (A1)
80150E9C: LUI T5, 0xDE00
80150EA0: ADDIU T4, V0, 0x0008
80150EA4: SW T4, 0x0000 (A1)
80150EA8: SW T5, 0x0000 (V0)
80150EAC: LW T6, 0x005C (SP)
80150EB0: SW T6, 0x0004 (V0)
80150EB4: ADDU S1, S6, S0
80150EB8: LBU A0, 0x0009 (S1)
80150EBC: LUI A1, 0x800A
80150EC0: ADDIU A1, A1, 0x7420
80150EC4: BEQL A0, R0, 0x80150F88
80150EC8: LW V0, 0x0000 (A1)
80150ECC: JAL 0x80144D30
80150ED0: NOP
80150ED4: SLL S3, S0, 0x1
80150ED8: LUI A1, 0x8015
80150EDC: ADDU A1, A1, S3
80150EE0: SLL A0, S0, 0x10
80150EE4: SRA A0, A0, 0x10
80150EE8: LH A1, 0x6360 (A1)
80150EEC: JAL 0x801504E0
80150EF0: OR A2, V0, R0
80150EF4: LBU T8, 0x0009 (S1)
80150EF8: LUI T2, 0x8007
80150EFC: LUI T7, 0x8015
80150F00: SLL T9, T8, 0x2
80150F04: SUBU T9, T9, T8
80150F08: SLL T9, T9, 0x2
80150F0C: ADDU T2, T2, T9
80150F10: LBU T2, 0x232D (T2)
80150F14: ADDU T7, T7, S3
80150F18: LH T7, 0x6368 (T7)
80150F1C: LUI T4, 0x8015
80150F20: SLL T3, T2, 0x4
80150F24: ADDU T4, T4, T3
80150F28: ADDU A0, S4, V0
80150F2C: LW T4, 0x626C (T4)
80150F30: ADDIU A0, A0, 0xFFE8
80150F34: ADDU A1, T7, S5
80150F38: SLL A1, A1, 0x10
80150F3C: SLL A0, A0, 0x10
80150F40: ADDIU T5, R0, 0x0014
80150F44: SW T5, 0x0014 (SP)
80150F48: SRA A0, A0, 0x10
80150F4C: SRA A1, A1, 0x10
80150F50: SW R0, 0x0018 (SP)
80150F54: ADDIU A2, R0, 0x0014
80150F58: ADDIU A3, R0, 0x0014
80150F5C: JAL 0x8001C6AC
80150F60: SW T4, 0x0010 (SP)
80150F64: ADDIU S0, S0, 0x0001
80150F68: SLL S0, S0, 0x10
80150F6C: SRA S0, S0, 0x10
80150F70: SLTI AT, S0, 0x0004
80150F74: BNEL AT, R0, 0x80150EB8
80150F78: ADDU S1, S6, S0
80150F7C: LUI A1, 0x800A
80150F80: ADDIU A1, A1, 0x7420
80150F84: LW V0, 0x0000 (A1)
80150F88: LUI T7, 0xDE00
80150F8C: ADDIU T6, V0, 0x0008
80150F90: SW T6, 0x0000 (A1)
80150F94: SW T7, 0x0000 (V0)
80150F98: LW T8, 0x0058 (SP)
80150F9C: SW T8, 0x0004 (V0)
80150FA0: LW T9, 0x00A8 (SP)
80150FA4: SW R0, 0x0020 (T9)
80150FA8: LW RA, 0x0044 (SP)
80150FAC: LW S0, 0x0028 (SP)
80150FB0: LW S1, 0x002C (SP)
80150FB4: LW S2, 0x0030 (SP)
80150FB8: LW S3, 0x0034 (SP)
80150FBC: LW S4, 0x0038 (SP)
80150FC0: LW S5, 0x003C (SP)
80150FC4: LW S6, 0x0040 (SP)
80150FC8: JR RA
80150FCC: ADDIU SP, SP, 0x00A8
80150FD0: JR RA
80150FD4: SW A0, 0x0000 (SP)
80150FD8: ADDIU SP, SP, 0xFFE0
80150FDC: SW RA, 0x001C (SP)
80150FE0: SW S0, 0x0018 (SP)
80150FE4: LBU T6, 0x0003 (A0)
80150FE8: LUI T8, 0x800A
80150FEC: ADDIU T8, T8, 0x7320
80150FF0: SLL T7, T6, 0x3
80150FF4: ADDU T7, T7, T6
80150FF8: SLL T7, T7, 0x2
80150FFC: ADDU V0, T7, T8
80151000: LHU V1, 0x0008 (V0)
80151004: OR S0, A0, R0
80151008: ANDI T9, V1, 0x8000
8015100C: BEQ T9, R0, 0x80151064
80151010: ANDI T3, V1, 0x4000
80151014: LBU T0, 0x0001 (A0)
80151018: BNEL T0, R0, 0x80151034
8015101C: LBU T1, 0x0002 (S0)
80151020: JAL 0x80048B90
80151024: ADDIU A0, R0, 0x0003
80151028: BEQ R0, R0, 0x80151058
8015102C: ADDIU T2, R0, 0x0003
80151030: LBU T1, 0x0002 (S0)
80151034: BNEZ T1, 0x8015104C
80151038: NOP
8015103C: JAL 0x80048B90
80151040: ADDIU A0, R0, 0x0022
80151044: BEQ R0, R0, 0x80151058
80151048: ADDIU T2, R0, 0x0003
8015104C: JAL 0x80048B90
80151050: ADDIU A0, R0, 0x0003
80151054: ADDIU T2, R0, 0x0003
80151058: SH R0, 0x0004 (S0)
8015105C: BEQ R0, R0, 0x801510B4
80151060: SB T2, 0x0000 (S0)
80151064: BEQ T3, R0, 0x8015108C
80151068: ANDI T6, V1, 0x0C00
8015106C: JAL 0x80048B90
80151070: ADDIU A0, R0, 0x0003
80151074: ADDIU T4, R0, 0x0001
80151078: ADDIU T5, R0, 0x0003
8015107C: SH R0, 0x0004 (S0)
80151080: SB T4, 0x0002 (S0)
80151084: BEQ R0, R0, 0x801510B4
80151088: SB T5, 0x0000 (S0)
8015108C: BEQL T6, R0, 0x801510B8
80151090: LH T0, 0x000E (S0)
80151094: LBU T7, 0x0001 (S0)
80151098: BEQL T7, R0, 0x801510B8
8015109C: LH T0, 0x000E (S0)
801510A0: JAL 0x80048B90
801510A4: ADDIU A0, R0, 0x0001
801510A8: LBU T8, 0x0002 (S0)
801510AC: XORI T9, T8, 0x0001
801510B0: SB T9, 0x0002 (S0)
801510B4: LH T0, 0x000E (S0)
801510B8: LH T1, 0x0014 (S0)
801510BC: ADDIU T2, R0, 0x0228
801510C0: ADDIU T3, R0, 0x00CC
801510C4: SH T2, 0x000A (S0)
801510C8: SH T3, 0x000C (S0)
801510CC: LW A0, 0x0028 (S0)
801510D0: SH T0, 0x0006 (S0)
801510D4: JAL 0x8001B9D4
801510D8: SH T1, 0x0008 (S0)
801510DC: SW V0, 0x0020 (S0)
801510E0: LW RA, 0x001C (SP)
801510E4: LW S0, 0x0018 (SP)
801510E8: ADDIU SP, SP, 0x0020
801510EC: JR RA
801510F0: NOP

Graphics 3

  • 0x3736F5 - Negative Poké Ball
  • 0x374665 - Star

AI stuff - 0x801245EC (Read 3 selected Pokémon before battle ?)

801245EC: ADDIU SP, SP, 0xFFA8
801245F0: LUI V1, 0x800B
801245F4: ADDIU V1, V1, 0xE540
801245F8: SW S0, 0x0024 (SP)
801245FC: LW S0, 0x11C4 (V1)
80124600: SW RA, 0x002C (SP)
80124604: SW S1, 0x0028 (SP)
80124608: LBU T6, 0x0000 (S0)
8012460C: LW A0, 0x119C (V1)
80124610: LW A1, 0x11A0 (V1)
80124614: ANDI T7, T6, 0x0002
80124618: BEQL T7, R0, 0x80124734
8012461C: LW RA, 0x002C (SP)
80124620: LB T8, 0x0000 (V1)
80124624: ADDIU T0, SP, 0x0048
80124628: OR A2, S0, R0
8012462C: BNEZ T8, 0x80124670
80124630: ADDIU T2, SP, 0x0048
80124634: LB V0, 0x0001 (V1)
80124638: ADDIU S1, R0, 0x0003
8012463C: OR A2, S0, R0
80124640: BNEZ V0, 0x80124654
80124644: NOP
80124648: LW T9, 0x0214 (S0)
8012464C: BEQ R0, R0, 0x80124654
80124650: LBU S1, 0x0002 (T9)
80124654: LBU A3, 0x11EC (V1)
80124658: SW T0, 0x0010 (SP)
8012465C: SW V0, 0x0014 (SP)
80124660: JAL 0x801A6500
80124664: SW S1, 0x0018 (SP)
80124668: BEQ R0, R0, 0x801246AC
8012466C: ADDIU A0, SP, 0x0048
80124670: LB V0, 0x0001 (V1)		;V0 = (0x800AE540)
80124674: ADDIU AT, R0, 0x0008
80124678: ADDIU S1, R0, 0x0003
8012467C: BNE V0, AT, 0x80124690
80124680: OR A1, R0, R0
80124684: LW T1, 0x0214 (S0)
80124688: BEQ R0, R0, 0x80124690
8012468C: LBU S1, 0x0002 (T1)
80124690: LW A3, 0x0018 (S0)		;A3 = CPU Pokémon ID
80124694: SW S1, 0x0018 (SP)
80124698: SW V0, 0x0014 (SP)
8012469C: SW T2, 0x0010 (SP)
801246A0: JAL 0x801A6500
801246A4: ANDI A3, A3, 0x00FF
801246A8: ADDIU A0, SP, 0x0048
801246AC: JAL 0x8012459C
801246B0: OR A1, S1, R0
801246B4: LW V0, 0x0214 (S0)
801246B8: SB S1, 0x0002 (S0)
801246BC: OR V1, R0, R0
801246C0: LBU T3, 0x0002 (V0)
801246C4: ADDIU A0, S0, 0x001C
801246C8: ADDIU A1, SP, 0x0048
801246CC: BLEZ T3, 0x80124730
801246D0: ADDIU A2, R0, 0x0054
801246D4: LBU T4, 0x0000 (A1)
801246D8: OR T9, A0, R0
801246DC: MULTU T4, A2
801246E0: MFLO T5
801246E4: ADDU T6, V0, T5
801246E8: ADDIU T0, T6, 0x0054
801246EC: LW T8, 0x0028 (T6)
801246F0: ADDIU T6, T6, 0x000C
801246F4: ADDIU T9, T9, 0x000C
801246F8: SW T8, 0xFFF4 (T9)
801246FC: LW T7, 0x0020 (T6)
80124700: SW T7, 0xFFF8 (T9)
80124704: LW T8, 0x0024 (T6)
80124708: BNE T6, T0, 0x801246EC
8012470C: SW T8, 0xFFFC (T9)
80124710: LW V0, 0x0214 (S0)
80124714: ADDIU V1, V1, 0x0001
80124718: ADDIU A0, A0, 0x0054
8012471C: LBU T1, 0x0002 (V0)
80124720: ADDIU A1, A1, 0x0001
80124724: SLT AT, V1, T1
80124728: BNEL AT, R0, 0x801246D8
8012472C: LBU T4, 0x0000 (A1)
80124730: LW RA, 0x002C (SP)
80124734: LW S0, 0x0024 (SP)
80124738: LW S1, 0x0028 (SP)
8012473C: JR RA
80124740: ADDIU SP, SP, 0x0058

Gym Leader Castle Prize Pokémon

8013B8A4 (to document)

8013B8A4: ADDIU  SP, SP, 0xFFE0
8013B8A8: SW     RA, 0x001C (SP)
8013B8AC: SW     S1, 0x0018 (SP)
8013B8B0: JAL    0xD00
8013B8B4: SW     S0, 0x0014 (SP)
8013B8B8: LUI    S1, 0x8014
8013B8BC: ADDIU  S1, S1, 0x7EDC
8013B8C0: LW     T6, 0x0000 (S1)
8013B8C4: ANDI   S0, V0, 0x00FF
8013B8C8: ADDIU  A0, R0, 0x0002
8013B8CC: JAL    0xAFC
8013B8D0: SW     R0, 0x02F0 (T6)
8013B8D4: JAL    0x16C
8013B8D8: NOP
8013B8DC: LW     T7, 0x0000 (S1)
8013B8E0: ANDI   V1, V0, 0x00FF
8013B8E4: BNEZ   V1, 0x8013B8F8
8013B8E8: SW     V1, 0x02E8 (T7)
8013B8EC: LW     T8, 0x0000 (S1)
8013B8F0: BEQ    R0, R0, 0x8013B904
8013B8F4: SW     R0, 0x02D8 (T8)
8013B8F8: LW     T0, 0x0000 (S1)
8013B8FC: ADDIU  T9, R0, 0x0001
8013B900: SW     T9, 0x02D8 (T0)
8013B904: SLT    V0, R0, S0
8013B908: BEQ    V0, R0, 0x8013B924
8013B90C: ADDIU  S0, S0, 0xFFFF
8013B910: JAL    0x4F8
8013B914: NOP
8013B918: SLT    V0, R0, S0
8013B91C: BNEZ   V0, 0x8013B910
8013B920: ADDIU  S0, S0, 0xFFFF
8013B924: LUI    T1, 0x800B
8013B928: LB     T1, 0xE540 (T1)
8013B92C: ADDIU  AT, R0, 0x001A
8013B930: LUI    V1, 0x8015
8013B934: BNE    T1, AT, 0x8013B95C
8013B938: ADDIU  V1, V1, 0x8CC8
8013B93C: ADDIU  T2, R0, 0x0008
8013B940: LUI    T4, 0x8014
8013B944: SW     T2, 0x0000 (V1)
8013B948: ADDU   T4, T4, T2
8013B94C: LBU   T4, 0x6EC0 (T4)
8013B950: LW T5, 0x0000 (S1)
8013B954: BEQ   R0, R0, 0x8013B9AC       ;Exit the GivePokémon function
8013B958: SW    T4, 0x02EC (T5)
8013B95C: JAL   0x4F8
8013B960: NOP

Determine which Pokémon to give

8013B964: LUI   AT, 0x4100
8013B968: MTC1  AT, F4                  ;F4 = 0x41000000
8013B96C: LUI   V1, 0x8015
8013B970: ADDIU V1, V1, 0x8CC8          ;V1 = 0x80148CC8
8013B974: MUL.S F6, F0, F4              ;F6 = F0 × F4
8013B978: LUI   T9, 0x8014              ;T9 = 0x80140000
8013B97C: TRUNC.W.S F8, F6              ;F8 = trunc(F6)
8013B980: MFC1  V0, F8                  ;V0 = F8
8013B984: NOP
8013B988: SLTI  AT, V0, 0x0008
8013B98C: BNEZ  AT, 0x8013B99C          ;if(PRN<8), branch to 0x8013B99C
8013B990: SW    V0, 0x0000 (V1)         ;Store PRN in (V1)
8013B994: ADDIU V0, R0, 0x0001          ;else V0 = 1 (so it defaults to Charmander as a fail-safe)
8013B998: SW    V0, 0x0000 (V1)         ;Store 1 in (V1)
8013B99C: ADDU  T9, T9, V0              ;T9 += PRN
8013B9A0: LBU   T9, 0x6EC0 (T9)         ;pokemon_id = (0x80146EC0 + PRN)
8013B9A4: LW    T0, 0x0000 (S1)
8013B9A8: SW    T9, 0x02EC (T0)         ;Prize Pokémon data
8013B9AC: LW    RA, 0x001C (SP)
8013B9B0: LW    S0, 0x0014 (SP)
8013B9B4: LW    S1, 0x0018 (SP)
8013B9B8: JR    RA
8013B9BC: ADDIU SP, SP, 0x0020

0x8013B9C0 (to document)

8013B9C0: ADDIU   SP, SP, 0xFFE0
8013B9C4: SW      RA, 0x001C (SP)
8013B9C8: LUI     A0, 0x4D4F
8013B9CC: SW      S0, 0x0018 (SP)
8013B9D0: JAL     0x784
8013B9D4: ORI     A0, A0, 0x4E53
8013B9D8: LUI     S0, 0x8014
8013B9DC: ADDIU   S0, S0, 0x7EDC
8013B9E0: LW      A0, 0x0000 (S0)
8013B9E4: JAL     0xB58
8013B9E8: ADDIU   A0, A0, 0x0008
8013B9EC: JAL     0x87C
8013B9F0: NOP
8013B9F4: JAL     0xD18
8013B9F8: ADDIU   A0, R0, 0x00D3
8013B9FC: LW      T6, 0x0000 (S0)
8013BA00: ADDIU   T7, R0, 0x00FF
8013BA04: OR      A1, R0, R0
8013BA08: SW      V0, 0x0000 (T6)
8013BA0C: LW      T8, 0x0000 (S0)
8013BA10: ADDIU   A2, R0, 0x00D3
8013BA14: SB      T7, 0x00AE (T8)
8013BA18: LW      V1, 0x0000 (S0)
8013BA1C: LW      T9, 0x0000 (V1)
8013BA20: ADDIU   A0, V1, 0x0008
8013BA24: LW      T2, 0x0008 (T9)
8013BA28: JAL     0xC34
8013BA2C: LW      A3, 0x0000 (T2)
8013BA30: LW      A0, 0x0000 (S0)
8013BA34: OR      A1, R0, R0
8013BA38: JAL     0xD04
8013BA3C: ADDIU   A0, A0, 0x0008
8013BA40: LW      A0, 0x0000 (S0)
8013BA44: JAL     0xB58
8013BA48: ADDIU   A0, A0, 0x0170
8013BA4C: JAL     0x87C
8013BA50: NOP
8013BA54: LW      T3, 0x0000 (S0)
8013BA58: JAL     0xD18
8013BA5C: LW      A0, 0x02EC (T3)
8013BA60: LW      T4, 0x0000 (S0)
8013BA64: OR      A1, R0, R0
8013BA68: SW      V0, 0x0004 (T4)
8013BA6C: LW      T5, 0x0000 (S0)
8013BA70: SB      R0, 0x0216 (T5)
8013BA74: LW      V1, 0x0000 (S0)
8013BA78: LW      T6, 0x0004 (V1)
8013BA7C: ADDIU   A0, V1, 0x0170
8013BA80: LH      A2, 0x02EE (V1)
8013BA84: LW      T7, 0x0008 (T6)
8013BA88: JAL     0xC34
8013BA8C: LW      A3, 0x0000 (T7)
8013BA90: LW      A0, 0x0000 (S0)
8013BA94: OR      A1, R0, R0
8013BA98: JAL     0xD04
8013BA9C: ADDIU   A0, A0, 0x0170

Give Pokémon subroutine

8013E1BC: ADDIU   SP, SP, 0xFFE0
8013E1C0: SW      RA, 0x0014 (SP)
8013E1C4: JAL     0x764
8013E1C8: NOP
8013E1CC: OR      A0, V0, R0
8013E1D0: JAL     0xD10
8013E1D4: OR      A1, R0, R0
8013E1D8: LUI     A1, 0x8014
8013E1DC: SW      V0, 0x001C (SP)
8013E1E0: ADDIU   A1, A1, 0x6F5C
8013E1E4: JAL     0xB70
8013E1E8: OR      A0, V0, R0
8013E1EC: LUI     AT, 0x8014
8013E1F0: SW      V0, 0x7EC0 (AT)
8013E1F4: JAL     0xD60
8013E1F8: LW      A0, 0x001C (SP)
8013E1FC: JAL     0xB20
8013E200: NOP
8013E204: ADDIU   A0, R0, 0x0020
8013E208: JAL     0x5C4
8013E20C: OR      A1, R0, R0
8013E210: LUI     V1, 0x8014
8013E214: ADDIU   V1, V1, 0x7EE0
8013E218: SW      V0, 0x0000 (V1)
8013E21C: OR      A0, V0, R0
8013E220: JAL     0xFD0
8013E224: ADDIU   A1, R0, 0x0020
8013E228: ADDIU   A0, R0, 0x030C
8013E22C: JAL     0x5C4
8013E230: OR      A1, R0, R0
8013E234: LUI     V1, 0x8014
8013E238: ADDIU   V1, V1, 0x7EDC
8013E23C: SW      V0, 0x0000 (V1)
8013E240: OR      A0, V0, R0
8013E244: JAL     0xFD0
8013E248: ADDIU   A1, R0, 0x030C
8013E24C: ADDIU   A0, R0, 0x004C
8013E250: JAL     0x5C4
8013E254: OR      A1, R0, R0
8013E258: LUI     V1, 0x8014
8013E25C: ADDIU   V1, V1, 0x7ED8
8013E260: SW      V0, 0x0000 (V1)
8013E264: OR      A0, V0, R0
8013E268: JAL     0x80057FD0
8013E26C: ADDIU   A1, R0, 0x004C
8013E270: JAL     0x8013B8A4            ;Determine which Pokémon to give
8013E274: NOP
8013E278: JAL     0x8013B9C0
8013E27C: NOP
8013E280: JAL     0x8013BD78
8013E284: NOP
8013E288: JAL     0x8013BBF8
8013E28C: NOP
8013E290: JAL     0x8013BC08
8013E294: NOP
8013E298: JAL     0x8013BC9C
8013E29C: NOP
8013E2A0: LW      RA, 0x0014 (SP)
8013E2A4: ADDIU 	SP, SP, 0x0020
8013E2A8: JR 	RA
8013E2AC: NOP

AI stuff - 0x80146EE4 (called at start of turn in battle, to complete and document)

80146EE4: LUI 	T6, 0x8007
80146EE8: LW 	T6, 0x8BA0 (T6)
80146EEC: ADDIU SP, SP, 0xFFE8
80146EF0: SW 	RA, 0x0014 (SP)
80146EF4: LHU 	V0, 0x0008 (T6)
80146EF8: LUI 	AT, 0x8014
80146EFC: ADDIU T9, R0, 0x0003
80146F00: ANDI T7, V0, 0x8000
80146F04: BEQ 	T7, R0, 0x80146F44
80146F08: ANDI T1, V0, 0x4000
80146F0C: LUI 	V0, 0x8014
80146F10: ADDIU V0, V0, 0x7998
80146F14: LH 	T8, 0x0008 (V0)				;T8 = AI Level
80146F18: ADDIU T0, R0, 0x0006
80146F1C: ADDIU A0, R0, 0x0002
80146F20: SH 	T8, 0x7854 (AT)
80146F24: SH 	T9, 0x0006 (V0)
80146F28: LUI 	AT, 0x8014
80146F2C: SH 	R0, 0x7990 (AT)
80146F30: LUI 	AT, 0x8014
80146F34: JAL 	0xB90
80146F38: SH 	T0, 0x7986 (AT)
80146F3C: BEQ 	R0, R0, 0x80146FEC
80146F40: LW 	RA, 0x0014 (SP)
80146F44: BEQ 	T1, R0, 0x80146F78
80146F48: ANDI T4, V0, 0x0800
80146F4C: LUI 	V0, 0x8014
80146F50: ADDIU V0, V0, 0x7998
80146F54: ADDIU T2, R0, 0x0002
80146F58: SH 	T2, 0x0006 (V0)
80146F5C: ADDIU T3, R0, 0x0006
80146F60: LUI 	AT, 0x8014
80146F64: SH 	T3, 0x7986 (AT)
80146F68: JAL 	0xB90
80146F6C: ADDIU A0, R0, 0x0003
80146F70: BEQ 	R0, R0, 0x80146FEC
80146F74: LW 	RA, 0x0014 (SP)
80146F78: ? (20)
80146F7C: ANDI T8, V0, 0x0400
80146F80: JAL 	0xB90
80146F84: ADDIU A0, R0, 0x0001
80146F88: LUI 	V0, 0x8014
80146F8C: ADDIU V0, V0, 0x7998
80146F90: LH 	T5, 0x0008 (V0)
80146F94: ADDIU AT, R0, 0x0003
80146F98: ADDIU T6, T5, 0x0002
80146F9C: ? (Special 0x01C1001A)
80146FA0: ? (Special 0x00007810)
80146FA4: SH 	T7, 0x0008 (V0)				;Store selected AI Level to (0x801479A0)
80146FA8: BEQ 	R0, R0, 0x80146FEC
80146FAC: LW 	RA, 0x0014 (SP)
80146FB0: ANDI T8, V0, 0x0400
80146FB4: ? (20)
80146FB8: LW 	RA, 0x0014 (SP)
80146FBC: JAL 	0xB90
80146FC0: ADDIU A0, R0, 0x0001
80146FC4: LUI 	V0, 0x8014
80146FC8: ADDIU V0, V0, 0x7998
80146FCC: LH 	T9, 0x0008 (V0)
80146FD0: ADDIU AT, R0, 0x0003
80146FD4: ADDIU T0, T9, 0x0001
80146FD8: ? (Special 0x0101001A)
80146FDC: ? (Special 0x00004810)
80146FE0: SH 	T1, 0x0008 (V0)
80146FE4: NOP
80146FE8: LW 	RA, 0x0014 (SP)
80146FEC: ADDIU SP, SP, 0x0018
80146FF0: JR 	RA
80146FF4: NOP

Prize Pokémon

  • 0x16D550 - Prize Pokémon IDs
01 - Bulbasaur
04 - Charmander
07 - Squirtle
6A - Hitmonlee
6B - Hitmonchan
85 - Eevee
8A - Omanyte
8C - Kabuto
36 - Psyduck

AI stuff - 0x80199C80, calc some value deviated from CH Ratio formula (called at start of turn in battle, to document)

80199C80: LUI 	V0, 0x801B
80199C84: LBU 	V0, 0xDFC0 (V0)				;V0 = 0x801ADFC0
80199C88: SW 	A1, 0x0004 (SP)
80199C8C: ADDIU A1, R0, 0x0001
80199C90: SW 	A2, 0x0008 (SP)
80199C94: BNE 	A1, V0, 0x80199CC8			;if(A1 != (0x801ADFC0), branch to 80199CC8
80199C98: ANDI A2, A2, 0x00FF				;A2 &= 0xFF
80199C9C: LBU 	T6, 0x000B (A0)				;T6 = Pokémon ID
80199CA0: LUI 	V1, 0x8007
80199CA4: SLL 	T7, T6, 0x2
80199CA8: SUBU T7, T7, T6
80199CAC: SLL 	T7, T7, 0x3
80199CB0: SUBU T7, T7, T6
80199CB4: ADDU V1, V1, T7
80199CB8: LBU 	V1, 0x0F8D (V1)				;Alt_CHrate = Base Speed
80199CBC: ADDIU V1, V1, 0x004C				;Alt_CHrate += 76
80199CC0: BEQ 	R0, R0, 0x80199CEC			;Branch to 80199CEC
80199CC4: SRA 	V1, V1, 0x2				;Alt_CHrate >> 2
80199CC8: LBU 	T8, 0x000B (A0)				;T6 = Pokémon ID
80199CCC: LUI 	V1, 0x8007
80199CD0: SLL 	T9, T8, 0x2
80199CD4: SUBU T9, T9, T8
80199CD8: SLL 	T9, T9, 0x3
80199CDC: SUBU T9, T9, T8
80199CE0: ADDU V1, V1, T9
80199CE4: LBU 	V1, 0x0F8D (V1)				;Alt_CHrate = Base Speed
80199CE8: SRA 	V1, V1, 0x1				;Alt_CHrate >> 1
80199CEC: BEQ 	A1, V0, 0x80199D14			;if(A1 == (0x801ADFC0), branch to 80199D14
80199CF0: ADDIU AT, R0, 0x0002				;AT = KARATE CHOP
80199CF4: LBU 	T0, 0x004D (A0)				;T0 = (A0+0x4D)
80199CF8: ANDI T1, T0, 0x0004
80199CFC: BEQ 	T1, R0, 0x80199D0C			;if(T0 & FOCUS_ENERGY == 0), branch to 80199D0C
80199D00: NOP
80199D04: BEQ 	R0, R0, 0x80199D34			;Branch to 80199D34
80199D08: SRA 	V1, V1, 0x1				;Alt_CHrate >> 1
80199D0C: BEQ 	R0, R0, 0x80199D34			;Branch to 80199D34
80199D10: SLL 	V1, V1, 0x1				;Alt_CHrate << 1
80199D14: LBU 	T2, 0x004D (A0)				;T2 = (A0+0x4D)
80199D18: ANDI T3, T2, 0x0004
80199D1C: BEQL  T3, R0, 0x80199D34			;if(T2 & 4 == 0), branch to 80199D34
80199D20: SLL 	V1, V1, 0x1				;Alt_CHrate << 1
80199D24: ADDIU V1, V1, 0x0028				;Alt_CHrate += 40
80199D28: BEQ 	R0, R0, 0x80199D34			;Branch to 80199D34
80199D2C: SLL 	V1, V1, 0x2				;Alt_CHrate << 2
80199D30: SLL 	V1, V1, 0x1				;Alt_CHrate << 1
80199D34: BEQ 	A2, AT, 0x80199D5C
80199D38: ADDIU AT, R0, 0x004B				;AT = RAZOR_LEAF
80199D3C: BEQ 	A2, AT, 0x80199D5C			;if(move_id = RAZOR_LEAF), branch to 80199D5C
80199D40: ADDIU AT, R0, 0x0098				;AT = CRABHAMMER
80199D44: BEQ 	A2, AT, 0x80199D5C			;if(move_id = CRABHAMMER), branch to 80199D5C
80199D48: ADDIU AT, R0, 0x00A3				;AT = SLASH
80199D4C: BEQL A2, AT, 0x80199D60			;if(move_id = SLASH), branch to 80199D60
80199D50: SLL 	V1, V1, 0x2				;Alt_CHrate << 2
80199D54: BEQ 	R0, R0, 0x80199D70			;Branch to 80199D70
80199D58: SRA 	V1, V1, 0x1				;Alt_CHrate >> 1
80199D5C: SLL 	V1, V1, 0x2				;Alt_CHrate << 2
80199D60: SLTI AT, V1, 0x0100
80199D64: BNEL AT, R0, 0x80199D74			;if(CHrate < 0x100), branch to 80199D74 and link
80199D68: SLTI AT, V1, 0x0100				;if(CHrate < 0x100), AT = 1
80199D6C: ADDIU V1, R0, 0x00FF				;CHrate = 255
80199D70: SLTI AT, V1, 0x0100				;if(CHrate < 0x100), AT = 1
80199D74: BNEZ AT, 0x80199D80				;if(CHrate < 0x100), branch to 80199D80
80199D78: NOP
80199D7C: ADDIU V1, R0, 0x00FF				;Alt_CHrate = 0xFF
80199D80: BGTZ V1, 0x80199D8C				;if(CHrate > 0), branch to 80199D8C
80199D84: NOP
80199D88: ADDIU V1, R0, 0x0001				;CHrate = 1
80199D8C: JR 	RA
80199D90: ANDI V0, V1, 0x00FF				;V0 = CHrate & 0xFF

AI stuff - 0x8019A2C8, AI handicap ?

8019A2C8: ADDIU SP, SP, 0xFFE0
8019A2CC: SW 	RA, 0x001C (SP)
8019A2D0: SW 	S1, 0x0018 (SP)
8019A2D4: SW 	S0, 0x0014 (SP)
8019A2D8: SW 	A2, 0x0028 (SP)
8019A2DC: OR 	S0, A0, R0
8019A2E0: OR 	S1, A1, R0
8019A2E4: SW 	A3, 0x002C (SP)
8019A2E8: JAL 	0xC80
8019A2EC: LBU 	A2, 0x002B (SP)			;Store A2 to (SP+0x2B)
8019A2F0: LUI 	T6, 0x801F								;AI handicap ?
8019A2F4: LW 	T6, 0x88C4 (T6)			;T6 = (0x801E88C4)
8019A2F8: ADDIU T9, R0, 0x00E6			;T9 = 230
8019A2FC: ADDIU T1, R0, 0x0001			;T1 = 1
8019A300: LBU 	T7, 0x0004 (T6)			;T7 = (T6+0x4)				;(0x801E9477), Hard: 0x3F, Normal: 0xB2, Easy: 0xFF, R1 Brock: 0x90
8019A304: OR 	A0, S0, R0			;A0 = S0
8019A308: OR 	A1, S1, R0			;A1 = S1
8019A30C: BGEZ 	T7, 0x8019A31C			;if(T7 >= 0), branch to 8019A31C
8019A310: SRA 	T8, T7, 0x1			;T8 = T7 >> 1
8019A314: ADDIU AT, T7, 0x0001			;AT = T7 + 1
8019A318: SRA 	T8, AT, 0x1			;T8 = AT >> 1
8019A31C: SUBU 	T0, T9, T8			;T0 = 230 - (T7>>1)
8019A320: SLT 	AT, V0, T0
8019A324: BNEZ 	AT, 0x8019A334			;if(Alt_CHrate < T0), branch to 8019A334
8019A328: LUI 	AT, 0x801F
8019A32C: BEQ 	R0, R0, 0x8019A33C		;Branch to 8019A33C
8019A330: SB 	T1, 0x94A4 (AT)			;Store 1 to (0x801E94A4)
8019A334: LUI 	AT, 0x801F
8019A338: SB 	R0, 0x94A4 (AT)			;Store 0 to (0x801E94A4)
8019A33C: JAL 	0xFF0
8019A340: LBU 	A2, 0x002B (SP)			;A2 = (SP+0x2B)
8019A344: OR 	A0, S0, R0
8019A348: JAL 	0x1A0
8019A34C: OR 	A1, S1, R0
8019A350: LBU 	T2, 0x002F (SP)
8019A354: OR 	A0, S0, R0
8019A358: BEQ 	T2, R0, 0x8019A368
8019A35C: NOP
8019A360: JAL 	0xEFC
8019A364: OR 	A1, S1, R0
8019A368: JAL 	0xE98
8019A36C: NOP
8019A370: OR 	A0, S0, R0
8019A374: JAL 	0xD94
8019A378: OR 	A1, S1, R0
8019A37C: LW 	RA, 0x001C (SP)
8019A380: LW 	S0, 0x0014 (SP)
8019A384: LW 	S1, 0x0018 (SP)
8019A388: JR 	RA
8019A38C: ADDIU SP, SP, 0x0020

AI stuff - 0x801A17A8 (start of turn in battle, to complete and document)

801A17A8: ADDIU SP, SP, 0xFF88
801A17AC: LUI 	V0, 0x801F
801A17B0: LW 	V0, 0x88C4 (V0)
801A17B4: SW 	RA, 0x003C (SP)
801A17B8: SW 	S8, 0x0038 (SP)
801A17BC: SW 	S7, 0x0034 (SP)
801A17C0: SW 	S6, 0x0030 (SP)
801A17C4: SW 	S5, 0x002C (SP)
801A17C8: SW 	S4, 0x0028 (SP)
801A17CC: SW 	S3, 0x0024 (SP)
801A17D0: SW 	S2, 0x0020 (SP)
801A17D4: SW 	S1, 0x001C (SP)
801A17D8: SW 	S0, 0x0018 (SP)
801A17DC: SW 	A0, 0x0078 (SP)
801A17E0: SW 	A1, 0x007C (SP)
801A17E4: SW 	A2, 0x0080 (SP)
801A17E8: LBU 	T6, 0x0006 (V0)
801A17EC: ANDI A2, A2, 0x00FF
801A17F0: OR 	S8, A3, R0
801A17F4: SB 	T6, 0x005B (SP)
801A17F8: LW 	T7, 0x0000 (V0)
801A17FC: LUI 	V0, 0x8000
801A1800: ORI 	S5, V0, 0x0002
801A1804: SLL 	T8, T7, 0xA
801A1808: BGEZ T8, 0x801A1834
801A180C: OR 	S2, S5, R0
801A1810: LBU 	T1, 0x0004 (A0)
801A1814: ADDIU AT, R0, 0x0001
801A1818: BEQ 	T1, AT, 0x801A1834
801A181C: NOP
801A1820: LBU 	T2, 0x0044 (A0)
801A1824: BLEZ T2, 0x801A1834
801A1828: NOP
801A182C: BEQ 	R0, R0, 0x801A1AD4
801A1830: OR 	V0, R0, R0
801A1834: LUI 	T3, 0x801F
801A1838: LBU 	T3, 0x9448 (T3)
801A183C: LUI 	AT, 0x801F
801A1840: OR 	S3, S5, R0
801A1844: SLL 	T4, T3, 0x2
801A1848: ADDU T4, T4, T3
801A184C: SLL 	T4, T4, 0x2
801A1850: ADDU AT, AT, T4
801A1854: OR 	S4, S5, R0
801A1858: SW 	R0, 0x006C (SP)
801A185C: SW 	R0, 0x0070 (SP)
801A1860: SB 	A2, 0x9422 (AT)
801A1864: OR 	S1, R0, R0
801A1868: BLEZ A2, 0x801A1954
801A186C: OR 	T0, A2, R0
801A1870: LW 	S6, 0x0078 (SP)
801A1874: ADDIU S7, R0, 0x002C
801A1878: ADDIU S6, S6, 0x0012
801A187C: ? (Special 0x02370019)
801A1880: LUI 	T7, 0x801F
801A1884: LBU 	T7, 0x9448 (T7)
801A1888: SLL 	T1, S1, 0x2
801A188C: LUI 	AT, 0x801F
801A1890: SLL 	T8, T7, 0x2
801A1894: ADDU T8, T8, T7
801A1898: SLL 	T8, T8, 0x2
801A189C: ADDU T9, T8, T1
801A18A0: ADDU AT, AT, T9
801A18A4: ? (Special 0x00006812)
801A18A8: ADDU S0, S8, T5
801A18AC: LW 	T6, 0x0028 (S0)
801A18B0: ADDU T2, S6, S1
801A18B4: SW 	T6, 0x9424 (AT)
801A18B8: LBU 	T3, 0x0032 (T2)
801A18BC: ? (22)
801A18C0: ADDIU S1, S1, 0x0001
801A18C4: LBU 	T4, 0x0057 (S6)
801A18C8: LBU 	T5, 0x0000 (S0)
801A18CC: OR 	A1, S5, R0
801A18D0: OR 	A3, S3, R0
801A18D4: ? (20)
801A18D8: ADDIU S1, S1, 0x0001
801A18DC: LW 	A0, 0x0028 (S0)
801A18E0: LH 	A2, 0x000A (S0)
801A18E4: JAL 	0x714
801A18E8: SW 	T0, 0x0044 (SP)

AI stuff - 0x801A1BC0 (start of turn in battle, R1 PokéCup T1 to complete and document)

801A1BC0: ADDIU SP, SP, 0xFFD8									;AI stuff, PokéCup?
801A1BC4: LUI 	T6, 0x801F
801A1BC8: LW 	T6, 0x88C4 (T6)
801A1BCC: SW 	RA, 0x0014 (SP)
801A1BD0: SW 	A0, 0x0028 (SP)
801A1BD4: SW 	A1, 0x002C (SP)
801A1BD8: LBU 	T7, 0x0004 (T6)									;(0x801E9477), Hard: 0x3F, Normal: 0xB2, Easy: 0xFF
801A1BDC: ADDIU T8, R0, 0x00FF
801A1BE0: ADDIU AT, R0, 0x0011
801A1BE4: SUBU V0, T8, T7
801A1BE8: ? (Special 0x0041001A)
801A1BEC: ? (Special 0x00001012)
801A1BF0: ANDI V1, V0, 0x00FF
801A1BF4: SLL 	T9, V1, 0xC
801A1BF8: ADDIU T0, T9, 0x0FFF
801A1BFC: ? (17)
801A1C00: LUI 	AT, 0x4F80
801A1C04: BGEZ T0, 0x801A1C18
801A1C08: ? (17)
801A1C0C: ? (17)
801A1C10: NOP
801A1C14: ? (17)
801A1C18: JAL 	0xEB0
801A1C1C: SW 	V1, 0x001C (SP)
801A1C20: ? (17)
801A1C24: LW 	V1, 0x001C (SP)
801A1C28: LBU 	T4, 0x002B (SP)
801A1C2C: LBU 	T7, 0x002F (SP)
801A1C30: ? (17)
801A1C34: ADDU T5, T4, V1
801A1C38: SLL 	T6, T5, 0x1
801A1C3C: BGEZ T2, 0x801A1C4C
801A1C40: SRA 	T3, T2, 0x2
801A1C44: ADDIU AT, T2, 0x0003
801A1C48: SRA 	T3, AT, 0x2
801A1C4C: ADDU T8, T3, T6
801A1C50: ? (Special 0x030F0019)
801A1C54: ADDIU AT, R0, 0x0064
801A1C58: LW 	RA, 0x0014 (SP)
801A1C5C: ADDIU SP, SP, 0x0028
801A1C60: ? (Special 0x00001012)
801A1C64: NOP
801A1C68: NOP
801A1C6C: ? (Special 0x0041001A)
801A1C70: ? (Special 0x00001012)
801A1C74: ADDIU V0, V0, 0x0005
801A1C78: JR 	RA
801A1C7C: ANDI V0, V0, 0xFFFF

AI stuff - 0x801A4CF0 (start of turn in battle, to complete and document)

801A4CF0: SLL 	T6, V0, 0x2
801A4CF4: SUBU T6, T6, V0
801A4CF8: LW 	V1, 0x006C (SP)
801A4CFC: SLL 	T6, T6, 0x2
801A4D00: ADDU T6, T6, V0
801A4D04: SLL 	T6, T6, 0x2
801A4D08: LUI 	A1, 0x801F
801A4D0C: LW 	A1, 0x88C4 (A1)
801A4D10: LW 	T0, 0x0040 (SP)
801A4D14: ADDU V1, V1, T6
801A4D18: LBU 	V0, 0x004E (T0)
801A4D1C: LW 	A3, 0x0000 (A1)
801A4D20: LUI 	AT, 0x0040
801A4D24: ANDI T1, V0, 0x0001
801A4D28: BEQ 	T1, R0, 0x801A4D60
801A4D2C: AND 	A3, A3, AT
801A4D30: LBU 	T4, 0x0051 (T0)
801A4D34: LBU 	T5, 0x004D (T0)
801A4D38: SLL 	T2, T4, 0x2
801A4D3C: ADDU T2, T2, T4
801A4D40: SLL 	T2, T2, 0x2
801A4D44: SUBU T2, T2, T4
801A4D48: SLL 	T2, T2, 0x2
801A4D4C: ADDU T2, T2, T4
801A4D50: ANDI T3, T5, 0x0080
801A4D54: BEQ 	T3, R0, 0x801A4D60
801A4D58: ADDU V1, V1, T2
801A4D5C: SLL 	V1, V1, 0x1
801A4D60: LBU 	T3, 0x0060 (T0)
801A4D64: ADDIU A2, R0, 0x001A
801A4D68: LBU 	T7, 0x005C (T0)
801A4D6C: ? (Special 0x01660019)
801A4D70: LBU 	T9, 0x005D (T0)
801A4D74: SLL 	T8, T7, 0x2
801A4D78: SUBU V1, V1, T8
801A4D7C: LBU 	T8, 0x0061 (T0)
801A4D80: LBU 	T1, 0x005E (T0)
801A4D84: ADDIU V1, V1, 0x001C
801A4D88: SLL 	T6, T9, 0x2
801A4D8C: LBU 	T2, 0x005F (T0)
801A4D90: SUBU V1, V1, T6
801A4D94: ? (Special 0x00007812)
801A4D98: ADDIU V1, V1, 0x001C
801A4D9C: SLL 	T4, T1, 0x2
801A4DA0: ? (Special 0x03060019)
801A4DA4: SUBU V1, V1, T4
801A4DA8: ADDIU V1, V1, 0x001C
801A4DAC: SLL 	T5, T2, 0x2
801A4DB0: SUBU V1, V1, T5
801A4DB4: ADDIU V1, V1, 0x001C
801A4DB8: SUBU V1, V1, T7
801A4DBC: ADDIU V1, V1, 0x00B6
801A4DC0: ANDI T6, V0, 0x0004
801A4DC4: LBU 	A0, 0x004D (T0)
801A4DC8: ? (Special 0x0000C812)
801A4DCC: SUBU V1, V1, T9
801A4DD0: BEQ 	T6, R0, 0x801A4DDC
801A4DD4: ADDIU V1, V1, 0x00B6
801A4DD8: ADDIU V1, V1, 0xFFCC
801A4DDC: ANDI T1, V0, 0x0002
801A4DE0: BEQ 	T1, R0, 0x801A4DEC
801A4DE4: ANDI T4, A0, 0x0040
801A4DE8: ADDIU V1, V1, 0xFFCC
801A4DEC: BEQ 	T4, R0, 0x801A4DF8
801A4DF0: LW 	T2, 0x0060 (SP)
801A4DF4: ADDIU V1, V1, 0xFFB3
801A4DF8: BNEZ A3, 0x801A4E34
801A4DFC: LW 	T5, 0x0058 (SP)
801A4E00: SLT 	AT, T2, T5
801A4E04: BEQ 	AT, R0, 0x801A4E34
801A4E08: LW 	A0, 0x0070 (SP)
801A4E0C: LW 	A1, 0x0074 (SP)
801A4E10: LBU 	A2, 0x0069 (SP)
801A4E14: SW 	V1, 0x006C (SP)
801A4E18: JAL 	0x214
801A4E1C: SW 	T0, 0x0040 (SP)
801A4E20: LW 	V1, 0x006C (SP)
801A4E24: LUI 	A1, 0x801F
801A4E28: LW 	A1, 0x88C4 (A1)
801A4E2C: LW 	T0, 0x0040 (SP)
801A4E30: SUBU V1, V1, V0
801A4E34: LBU 	T3, 0x0005 (A1)				;T3 = (A1+0x5)				;(0x801E9476), Hard: 0x7F, Normal: 0x65, Easy: 0xB2
801A4E38: LW 	T7, 0x0080 (SP)
801A4E3C: ADDU V1, V1, T3
801A4E40: ADDIU V1, V1, 0xFF81				;V1 -= 0x7F
801A4E44: BEQ 	R0, R0, 0x801A4E70
801A4E48: LBU 	A0, 0x0000 (T7)
801A4E4C: LW 	A0, 0x0078 (SP)
801A4E50: JAL 	0xF70
801A4E54: SW 	T0, 0x0040 (SP)
801A4E58: LW 	T8, 0x0080 (SP)
801A4E5C: LW 	T0, 0x0040 (SP)
801A4E60: ADDIU V1, R0, 0x003F
801A4E64: SB 	V0, 0x0000 (T8)
801A4E68: LW 	T9, 0x0080 (SP)
801A4E6C: LBU 	A0, 0x0000 (T9)
801A4E70: SLL 	T6, A0, 0x4
801A4E74: SUBU T6, T6, A0
801A4E78: LW 	A1, 0x0078 (SP)
801A4E7C: SLL 	T6, T6, 0x2
801A4E80: SUBU T6, T6, A0
801A4E84: SLL 	T6, T6, 0x1
801A4E88: ADDU T1, A1, T6
801A4E8C: LHU 	T4, 0x0032 (T1)
801A4E90: ? (20)
801A4E94: OR 	A0, A1, R0
801A4E98: ? (Regimm)
801A4E9C: OR 	A0, A1, R0
801A4EA0: LBU 	T2, 0x0006 (A1)
801A4EA4: SLT 	AT, A0, T2
801A4EA8: BNEZ AT, 0x801A4ECC
801A4EAC: OR 	A0, A1, R0
801A4EB0: SW 	V1, 0x006C (SP)
801A4EB4: JAL 	0xF70
801A4EB8: SW 	T0, 0x0040 (SP)

Free Battle text

  • 0x2D2000
%s1~100
%s50~55
%s25~30
%s15~20
%s1~100
%dP.COM.

Battle Program

Moves Legality Checker

  • 0x2ECB38 - 0x2ECC10 - Compares the Moves known by the Pokémon with the Moves it learns
/* Starting Moves : 0x71BA0 */
OR V0, S4, R0
(0x2ECB3C) LBU V1, $000A (V0)	// Load Starting Move in V1
ADDIU S0, S0, $0001		// Increase the Starting Move array key
SLTI AT, S0, $0004		// Sets AT to 1 if 4 starting Moves have not been checked yet
BEQ V1, R0, $002ECB64		// If there is no starting Move to check, branch to 0x2ECB64
NOP
LBU T0, $001F (S2)		// Load Move known by the Pokémon in T0
ADDU T1, S3, S1
BNE V1, T0, $002ECB64		// If Starting Move ID ≠ known Move ID, branch to 0x2ECB64
NOP
SB R0, $0715 (T1)
(0x2ECB64) BNEZ AT, $002ECB3C	// If the 4 Starting Moves have not been checked, branch to 0x2ECB3C
ADDIU V0, V0, $0001		// Increase the Starting Moves pointer
/* Level-Up Moves : 0x77FB20 */
OR S0, R0, R0
LW V1, $0048 (SP)
(0x2ECB74) LBU V0, $0000 (V1)
ADDIU S0, S0, $0001
BEQL V0, R0, $002ECBB0
SLTI AT, S0, $000A
LBU T2, $0026 (S5)
SLT AT, T2, V0
BNEL AT, R0, $002ECBB0
SLTI AT, S0, $000A		// Sets AT to 1 if 10 Level-Up Moves have not been checked yet
LBU T3, $000A (V1)		// Load Level-Up Move in T3
LBU T4, $001F (S2)		// Load Move known by the Pokémon in T4
ADDU T5, S3, S1
BNEL T3, T4, $002ECBB0		// If Level-Up Move ID ≠ known Move ID, branch to 0x2ECBB0
SLTI AT, S0, $000A
SB R0, $0715 (T5)		// Set the Move validity byte to 0
SLTI AT, S0, $000A
(0x2ECBB0) BNEZ AT, $002ECB74 	// If the 10 Level-Up Moves have not been checked, branch to 0x2ECB74
ADDIU V1, V1, $0001		// Increase the Level-Up Moves pointer
OR S0, R0, R0
LW V1, $004C (SP)
LBU V0, $0000 (V1)
ADDIU S0, S0, $0001
BEQL V0, R0, $002ECBFC
SLTI AT, S0, $000A
LBU T6, $0026 (S5)
SLT AT, T6, V0
BNEL AT, R0, $002ECBFC
SLTI AT, S0, $000A
LBU T9, $001F (S2)
ADDU T7, S3, S1
BNEL T8, T9, $002ECBFC
SLTI AT, S0, $000A
SB R0, $0715 (T7)
SLTI AT, S0, $000A
BNEZ AT, $002ECBC0
(0x2ECBFC) ADDIU V1, V1, $0001
OR S0, R0, R0
ANDI A0, S6, $FFFF
OR A1, S7, R0
JAL $04302194

Move-specific code

  • 0x2ED680 - Seismic Toss
ADDIU AT, R0, $0045
BNE V0, AT, $002ED6A0	// If Move ID ≠ Seismic Toss, branch to 0x2ED6A0
OR A0, S0, R0
ADDIU A1, R0, $0008
JAL $04308654
OR A2, R0, R0
  • 0x2ED698 - Fail-safe
BEQ R0, R0, $002ED73C	// Branch to 0x2ED73C
LW T1, $0024 (SP)
  • 0x2ED6A0 - Surf
ADDIU AT, R0, $0039
BNE V0, AT, $002ED6C0	// If Move ID ≠ Surf, branch to 0x2ED6C0
OR A0, S0, R0
ADDIU A1, R0, $000A
JAL $04308654
OR A2, R0, R0
  • 0x2ED6B8 - Fail-safe
BEQ R0, R0, $002ED73C	// Branch to 0x2ED73C
LW T1, $0024 (SP)
  • 0x2EE2BC - Stomp, Body Slam, Seismic Toss
LW A0, $0000 (T5)
LW T6, $0028 (SP)
ADDIU AT, R0, $0017
LW T8, $001C (SP)
LBU V1, $0044 (T6)
ADDIU A1, R0, $000F
OR A2, R0, R0
BEQ V1, AT, $002EE2F0	// If the Move is Stomp, Body Slam, or Seismic Toss, JAL 0x04308654
ADDIU AT, R0, $0022
BEQ V1, AT, $002EE2F0
ADDIU AT, R0, $0045
BNEL V1, AT, $002EE2FC	// Else jump to 0x2EE2F8
LW RA, $0014 (SP)2EE43C
JAL $04308654
  • 0x2EE3B0 - String Shot
SW V1, $0020 (SP)
LW V1, $0020 (SP)
ADDIU AT, R0, $0051
LUI T3, $843C
LBU T2, $0044 (V1)
BNEL T2, AT, $002EE404	// If the Move is not String Shot, jump to 0x2EE400
LBU A1, $005A (V1)
LBU T3, $4E45 (T3)
LUI T4, $843C
BEQ T3, R0, $002EE444
NOP
LBU T4, $4E44 (T4)
BEQ T4, R0, $002EE444
NOP
LW A0, $0000 (S0)
JAL $04301C54
  • 0x2EE400 -
LBU A1, $005A (V1)	// Loads P2 Move ID
SW V1, $0020 (SP)
JAL $04301C54
  • 0x2EE40C - Bind, Wrap, Constrict
LW A0, $0000 (S0)
LW V1, $0020 (SP)
ADDIU AT, R0, $0014
ADDIU A1, R0, $0010
LBU V0, $0044 (V1)
OR A2, R0, R0
BEQ V0, AT, $002EE43C		// If the Move is Bind, Wrap, or Constrict, JAL 0x4308654
ADDIU AT, R0, $0023
BEQ V0, AT, $002EE43C
ADDIU AT, R0, $0084
BNE V0, AT, $002EE444		// Else jump to 0x2EE444
NOP
JAL $04308654
OR V0, A2, R0			// Copy number of iterations to check in V0
SW A0, $0000 (SP)		// Store Pokémon's Move ID
ANDI A0, A0, $00FF
BEQ A2, R0, $002F23DC		// If all the array's values have been compared with Pokémon's Move ID, jump to 0x2F23DC
ADDIU A2, A2, $FFFF		// Decreases A2
OR V1, A0, R0			// Copy Pokémon's Move ID in V1
(0x2F23B8) LBU T6, $0000 (A1)	// Load next array's value to compare with Pokémon's Move ID in T6
OR V0, A2, R0			// Copy number of iterations to check in V0
ADDIU A1, A1, $0001		// Increase array's value pointer
BNE V1, T6, $002F23D4		// If the array's value is not equal to Pokémon's Move ID, jump to 0x2F23D4 (next function)
NOP
JR RA				// Else, jump to RA
  • 0x2F23D0 - Checks if the Moves IDs array from the previous function has been fully checked
ADDIU V0, R0, $0001
(0x2F23D0) BNEZ A2, $002F23B8	// If there are still values to check in the array, jump to 0x2F23B8
ADDIU A2, A2, $FFFF
OR V0, R0, R0
JR RA
NOP
  • 0x2F330C - Freeze Status (?)
ADDIU SP, SP, $FFD0
SW RA, $002C (SP)
SW S3, $0024 (SP)
SW S2, $0020 (SP)
OR S2, A0, R0
SW S4, $0028 (SP)
SW S1, $001C (SP)
SW S0, $0018 (SP)
JAL $04307EC4
OR S3, R0, R0
  • 0x2FA084 - Ensures that Critical Hit Rate multiplier ≠ 8
LBU T8, $004C (V1)
ANDI T9, T8, $FFF7	// P1 CH Rate multiplier & 0xFFF7
SB T9, $004C (V1)
LW A1, $0034 (SP)
LBU T0, $06D8 (A1)
ADDIU A1, A1, $068C
ANDI T1, T0, $FFF7	// P2 CH Rate multiplier & 0xFFF7
SB T1, $004C (A1)
LBU T2, $004C (V1)
ANDI T3, T2, $0012	// (0x80287B18) & 0x12
BNEZ T3, $002FA150

  • 0x302528 - Compares P2 Move ID with the list at 0x37552C
ADDIU A2, R0, $0005
BEQ V0, R0, $00302540
LW T3, $0018 (SP)
ADDIU T2, R0, $0002
BEQ R0, R0, $0030256C
SW T2, $001C (SP)
LUI A1, $8438
ADDIU A1, A1, $59A4
LBU A0, $0044 (T3)	// Loads P2 Move ID
JAL $04307AE0
  • 0x302550 - Metronome, Mirror Move
ADDIU A2, R0, $002E
BEQ V0, R0, $00302568
ADDIU T5, R0, $0004
BEQ R0, R0, $0030256C	// Begin the function at LW T6, $0018 (SP)
SW T4, $001C (SP)
SW T5, $001C (SP)
LW T6, $0018 (SP)	// Pointer to P1 or P2 Pokémon Move ID
ADDIU AT, R0, $0076
LUI T7, $8439
LBU V0, $0044 (T6)	// Loads Move ID to V0
BEQ V0, AT, $0030258C	// If the Move is Metronome, jump to 0x30258C (LW T7, $0240 (T7))
ADDIU AT, R0, $0077
BNE V0, AT, $00302690	// ElseIf the Move is not Mirror Move, jump to 0x302590 (LUI A0, $8439)
LUI T4, $8439
LW T7, $0240 (T7)
LUI A0, $8439
LHU T8, $002C (T7)
SLL T9, T8, $2
ADDU A0, A0, T9
JAL $0430862C

?

  • 0x30B97C -
LUI T6, $8439
LW T6, $0240 (T6)
ADDIU SP, SP, $FFE8
SW RA, $0014 (SP)
LHU V0, $002C (T6)
LUI V1, $8439
SLL T7, V0, $2
ADDU V1, V1, T7
LW V1, $0010 (V1)
LBU T8, $06D9 (V1)	// Load ? to T8
ADDIU V1, V1, $068C
ANDI T9, T8, $0080
BNEL T9, R0, $0030B9C8	// If ? ≥ 128, jump to 0x30B9C4
LBU T2, $005A (V1)	// Loads 0x80287B24 to T2
LBU T0, $0015 (V1)	// Loads 0x80287AE0 to T0
ANDI T1, T0, $0018
BEQL T1, R0, $0030B9EC	// If (0x80287AE0) < 24, jump to 0x30B9E8
OR V0, R0, R0
(0x30B9C4) LBU T2, $005A (V1)
ADDIU AT, R0, $00F0
ANDI T3, T2, $00F0
BNEL T3, AT, $0030B9EC
OR V0, R0, R0
JAL $04320658
ADDIU A0, R0, $0023
BEQ R0, R0, $0030B9F0
LW RA, $0014 (SP)
(0x30B9E8) OR V0, R0, R0
LW RA, $0014 (SP)
(0x30B9F0) ADDIU SP, SP, $0018
JR RA

PRNG

  • 0x359FA8 - Pseudo-Random Number Generator
iterations = ((Counter(COP0) & 0xFF0) >> 4) & 0xFF;
seed1 = 0x4D2;			// RAM(0x801AE19C) initial value
seed2 = 0x1A85;			// RAM(0x801AE1A0) initial value
for (i = iterations; i > 0; i--) {
	seed1 = seed1 × 0x41C64E6D + 0x303B;
	if(seed2 && 1 == 1) {
		seed2 = seed2 ⊕ 0x11020;
	}
	seed2 = seed2 >> 1;
}
prn = (seed2 ⊕ seed1) & 0xFF;
ANDI A0, V0, $0FF0 // A0 = Counter(COP0) & 0xFF0 SRL A0, A0, $4 // A0 >> 4 ANDI T6, A0, $00FF // T6 = ((Counter(COP0) & 0xFF0) >> 4) & 0xFF BLEZ T6, $0035A01C // If negative number, jump to 0x35A01C (skips PRNG) ANDI V1, A0, $00FF // V1 = ((Counter(COP0) & 0xFF0) >> 4) & 0xFF LUI A3, $0001 LUI A2, $41C6 LUI A1, $8439 LUI A0, $8439 ADDIU A0, A0, $AE40 // A0 is a pointer to RAM (0x801AE1A0) ADDIU A1, A1, $AE3C // A1 is a pointer to RAM (0x801AE19C) ORI A2, A2, $4E6D // A2 = 0x41C64E6D ORI A3, A3, $1020 // A3 = 0x11020 (0x359FDC) LW T7, $0000 (A1) // T7 = (0x801AE19C) LW V0, $0000 (A0) // V0 = (0x801AE1A0) ADDIU V1, V1, $FFFF // Decrease V1 MULTU T7, A2 // T7 × 0x41C64E6D ANDI T0, V0, $0001 // Is V0 odd ? ANDI V1, V1, $00FF // V1 & 0xFF XOR T1, V0, A3 // T1 = (0x801AE1A0) ⊕ 0x11020 MFLO T8 // T8 = T7 × 0x41C64E6D ADDIU T9, T8, $303B // T9 = T8 + 0x303B BEQ T0, R0, $0035A010 // If V0 is even, jump to 0x35A010 SW T9, $0000 (A1) // Store seed × 0x41C64E6D + 0x303B to (0x801AE19C) SW T1, $0000 (A0) // Store (0x801AE1A0) ⊕ 0x11020 to (0x801AE1A0) OR V0, T1, R0 // V0 = (0x801AE1A0) ⊕ 0x11020 (0x35A010) SRL T2, V0, $1 // T2 == V0 >> 1 BGTZ V1, $00359FDC // As long as V1 > 0, loop to 0x359FDC SW T2, $0000 (A0) // Store V0 >> 1 to (0x801AE1A0) (0x35A01C) LUI A0, $8439 LUI A1, $8439 ADDIU A1, A1, $AE3C // A1 is a pointer to RAM (0x801AE19C) ADDIU A0, A0, $AE40 // A0 is a pointer to RAM (0x801AE1A0) LW T4, $0000 (A0) // Load Pseudo-Random Number 1 in T4 LW T3, $0000 (A1) // Load Pseudo-Random Number 2 in T3 LW RA, $0014 (SP) ADDIU SP, SP, $0018 XOR V1, T3, T4 // V1 = PRN1 ⊕ PRN2 JR RA ANDI V0, V1, $00FF // V0 = (PRN1 ⊕ PRN2) & 0xFF

Moves initialization

?

  • 0x35A298 - ?
LUI A2, $8439
ADDIU A2, A2, $0010
SLL T6, A0, $2
SLL T8, A1, $2
ADDU T7, A2, T6
ADDU T9, A2, T8
LW V0, $0000 (T7)
LW V1, $0000 (T9)
ADDIU SP, SP, $FFE0
SW RA, $0014 (SP)
ADDIU V0, V0, $068C
ADDIU V1, V1, $068C
SW V1, $0018 (SP)
JAL $0436F838

Reset current Move data

  • 0x35A2D0 - 00s Move Power / Effect / Type... in RAM area
SW V0, $001C (SP)
LUI AT, $843C
LW V0, $001C (SP)
SB R0, $4DC2 (AT)
LW V1, $0018 (AT)
LUI AT, $843C
SB R0, $4DB3 (AT)
SB R0, $0044 (V0)
SB R0, $0058 (V0)
SB R0, $0058 (V1)
SB R0, $004A (V0)
SB R0, $004B (V0)
SB R0, $004C (V0)
SB R0, $004D (V0)
SB R0, $004E (V0)
SB R0, $0052 (V0)
SB R0, $0057 (V0)
SB R0, $0056 (V0)
LBU T0, $004C (V1)
LUI AT, $843C
ADDIU T2, R0, $0001
ANDI T1, T0, $FFDF
SB T1, $004C (V1)
LW RA, $0014 (SP)
SB T2, $4DA3 (AT)
ADDIU SP, SP, $0020
JR RA
NOP

Move program

Damage Variance

  • 0x35A4D0 - Calls the Pseudo-Random Number Generator
LUI T6, $843C
LHU T6, $4DC4 (T6)		// Load Move Power to T6
ADDIU SP, SP, $FFE8
SW RA, $0014 (SP)
SLTI AT, T6, $0002
BNEL AT, R0, $0035A530		// If Move Power ≤ 1, branch to 0x35A530 (Skip Damage Variance)
LW RA, $0014 (SP)
(0x35A4EC) JAL $0436F6D8	// Jump to PRNG Count
NOP
  • 0x35A4F4 - Damage × [217;255] ÷ 255
SLTI AT, V0, $00D9
BNEZ AT, $0035A4EC		// If PRN < 217, branch to 0x35A4EC (new PRNG call)
NOP
LUI T7, $843C
LHU T7, $4DC4 (T7)		// T7 = MaxDamage
ADDIU AT, R0, $00FF
MULTU T7, V0
MFLO T8				// T8 = MaxDamage × [217;255]
NOP
NOP
DIV T8, AT
MFLO T9				// T9 = MaxDamage × [217;255] ÷ 255
LUI AT, $843C
SH T9, $4DC4 (AT)		// Store Adjusted Damage in (0x801E8126)
LW RA, $0014 (SP)
(0x35A530) ADDIU SP, SP, $0018
JR RA
NOP

Moves Effects and High Critical Hit Rate

OR V0, A2, R0			// Copy number of iterations to check in V0
SW A0, $0000 (SP)
ANDI A0, A0, $00FF
BEQ A2, R0, $0035A650		// If all the array's values have been compared with Pokémon's Move ID, jump to 0x35A650
ADDIU A2, A2, $FFFF
OR V1, A0, R0			// Copy Pokémon's Move Effect in V1
(0x35A62C) LBU T6, $0000 (A1)	// Load next array's value to compare with Pokémon's Move Effect in T6
OR V0, A2, R0			// Copy number of iterations to check in V0
ADDIU A1, A1, $0001		// Increase array's value pointer
BNE V1, T6, $0035A648		// If the array's value is not equal to Pokémon's Move Effect, jump to 0x35A648 (next function)
NOP
JR RA
  • 0x35A644 - Checks if the array from the previous function has been fully parsed
ADDIU V0, R0, $0001
(0x35A648) BNEZ A2, $0035A62C	// If there are still values to check in the array, jump to 0x35A62C
ADDIU A2, A2, $FFFF
(0x35A650) OR V0, R0, R0
JR RA

Attack / Defense / Critical Hit manipulation

  • 0x35A9C0 - 0x35AB18 - Attack / Defense / Critical Hit manipulation for Damage Calculation
LBU T6, $0046 (V0)		// Load Move Power to T6
LUI V1, $843C
ADDIU V1, V1, $4DC6		// V1 = 0x801E8126
ANDI T7, T6, $FFFF		// Copy Move Power to T7
BEQ T7, R0, $0035AB18		// If Move Power = 0, get out of this function
SH T6, $0000 (V1)		// Store Move Power at 0x801E8126
LBU T8, $0047 (V0)		// Load Move Type to T8
LUI V1, $843C
LUI A0, $843C
SLTI AT, T8, $0014		// If Physical Move, set AT to 1
BEQ AT, R0, $0035AA58		// If Special Move, jump to 0x35AA58 (LUI V1, $843C)
NOP
LW V1, $523C (V1)
LUI A2, $843C
ADDIU A2, A2, $4DCA		// A2 = 0x801E812A
LHU T9, $002C (V1)		// Load Defense stat to T9
LUI A3, $843C
SH T9, $0000 (A2)
LBU T0, $004E (V1)		// Load "Is Reflect up ?" to T0
SLL T3, T9, $1			// T3 = Defense stat × 2
ANDI T1, T0, $0004
BEQ T1, R0, $0035AA20		// If Reflect is not up, jump to 0x35AA20 (LBU A0, $4DA5 (A0))
NOP
SH T3, $0000 (A2)		// Store Defense × 2 in 0x801E812A
(0x35AA20) LBU A0, $4DA5 (A0)	// Load Critical Hit to A0
BEQL A0, R0, $0035AA4C		// If not a Critical Hit, jump to 0x35AA4C
LHU T6, $002A (V0)
LHU T4, $003A (V1)
LUI A3, $843C
ADDIU A3, A3, $4DC8
SH T4, $0000 (A2)
LHU T5, $0038 (V0)
BEQ R0, R0, $0035AAC0		// Jump to 0x35AAC0 (LHU A1, $0000 (A3))
SH T5, $0000 (A3)
LHU T6, $002A (V0)
(0x35AA4C) ADDIU A3, A3, $4DC8
BEQ R0, R0, $0035AAC0		// Jump to 0x35AAC0 (LHU A1, $0000 (A3))
SH T6, $0000 (A3)
(0x35AA58) LUI V1, $843C
LW V1, $523C (V1)
LUI A2, $843C
ADDIU A2, A2, $4DCA
LHU T7, $0030 (V1)		// Load Special stat to T7
LUI A0, $843C
SH T7, $0000 (A2)
LBU T8, $004E (V1)		// Light Screen
ANDI T9, T8, $0002
BEQ T9, R0, $0035AA88
SLL T1, T7, $1			// T1 = Special stat × 2
SH T1, $0000 (A2)		// Store Special × 2
LBU A0, $4DA5 (A0)		// Load Critical Hit to A0
BEQL A0, R0, $0035AAB4		// If not a Critical Hit, jump to 0x35AAB4
LHU T4, $0030 (V0)
LHU T2, $003E (V1)
LUI A3, $843C
ADDIU A3, A3, $4DC8
SH T2, $0000 (A2)
LHU T3, $003E (V0)
BEQ R0, R0, $0035AAC0		// Jump to 0x35AAC0 (LHU A1, $0000 (A3))
SH T3, $0000 (A3)
LHU T4, $0030 (V0)
(0x35AAB4) LUI A3, $843C
ADDIU A3, A3, $4DC8
SH T4, $0000 (A3)
(0x35AAC0) LHU A1, $0000 (A3)	// Load Attack stat to A1
ANDI T5, A1, $FF00
BEQL T5, R0, $0035AB00		// If Attack stat < 256, jump to 0x35AAFC (LBU T1, $0026 (V0))
LBU T1, $0026 (V0)		// Load Level to T1
LHU V1, $0000 (A2)		// Load Defense Stat to V1
SRL T7, A1, $2			// T7 = Attack stat >> 2
ANDI T9, T7, $FFFF
ANDI T6, V1, $FF00
BEQ T6, R0, $0035AAFC		// If Defense stat < 256, jump to 0x35AAFC (LBU T1, $0026 (V0))
SRL T8, V1, $2			// T8 = Defense stat >> 2
SH T7, $0000 (A3)		// Store T7 to 0x801E8128
BNEZ T9, $0035AAFC		// If T9 > 0, jump to 0x35AAFC
SH T8, $0000 (A2)		// Store T8 in 0x801E812A
ADDIU T0, R0, $0001
SH T0, $0000 (A3)		// Set 0x801E8128 to 1
(0x35AAFC) LBU T1, $0026 (V0)	// Load Level to T1
LUI V1, $843C
ADDIU V1, V1, $4DCC		// V1 = 0x801E812C
BEQ A0, R0, $0035AB18		// If not a Critical Hit, get out of the function
SH T1, $0000 (V1)
SLL T3, T1, $1			// T3 = Level × 2
SH T3, $0000 (V1)		// Store Level × 2 in 0x801E812C
JR RA

Explosion / Selfdestruct Defense halving

  • 0x35AB20 - 0x35AB84 - Defense halved (Explosion, Selfdestruct)
LUI T6, $843C
LW T6, $5238 (T6)
ADDIU SP, SP, $FFE8
SW RA, $0014 (SP)
LBU V0, $0045 (T6)		// Load Move Effect ID
ADDIU AT, R0, $0007
LUI A1, $843C
BNE V0, AT, $0035AB60		// If Move Effect ≠ 0x7, jump to 0x35AB60 (Defense halved)
ADDIU A1, A1, $4DCA
LHU T7, $0000 (A1)		// Load Defense
ADDIU T0, R0, $0001
SRL T8, T7, $1			// T8 = Defense ÷ 2
ANDI T9, T8, $FFFF
BNEZ T9, $0035AB60		// If remaining Defense > 0, jump to 0x35AB60
SH T8, $0000 (A1)
SH T0, $0000 (A1)
(0x35AB60) LUI A1, $843C
ADDIU AT, R0, $001D
BEQ V0, AT, $0035ABA8		// If Move Effect = 0x1D, jump to 0x35ABA8 (Attacks 2-5 Times)
ADDIU A1, A1, $4DCA
ADDIU AT, R0, $001E
BEQ V0, AT, $0035ABA8		// If Move Effect = 0x1E, jump to 0x35ABA8 (Attacks 2-5 Times) (Unused, same as 0x1D)
ADDIU AT, R0, $0026
BNE V0, AT, $0035AB94		// If Move Effect ≠ 0x26 (OHKO), jump to 0x35AB94
LUI T1, $843C
JAL $0436FDBC

Damage Calculation

  • 0x35AB94 - 0x35AC74 - Damage Calculation
LHU T1, $4DC6 (T1)		// Load Move Power to T1
BNEZ T1, $0035ABA8		// If Move Power > 0, jump to 0x35ABA8
NOP
BEQ R0, R0, $0035AC6C		// Else jump to 0x35AC6C
OR V0, R0, R0
(0x35ABA8) LUI T2, $843C
LHU T2, $4DCC (T2)		// Load Level to T2 (adjusted with Critical Hit)
ADDIU AT, R0, $0005
LUI T6, $843C
SLL T3, T2, $1			// T3 = Level × 2
DIV T3, AT
MFLO T4				// T4 = Level × 2 ÷ 5
LHU T6, $4DC6 (T6)		// Load Move Power to T6
ADDIU T5, T4, $0002		// T5 = (Level × 2 ÷ 5) + 2
LUI T8, $843C
MULTU T5, T6			// Move Power × ((Level × 2 ÷ 5) + 2)
LHU T8, $4DC8 (T8)		// Load Attack in T8
LHU T0, $0000 (A1)		// Load Defense in T0
LUI A0, $843C
ADDIU A0, A0, $4DC4
LHU T3, $0000 (A0)		// Load Previous Hit Damage to T3
ADDIU T5, R0, $03E4		// T5 = 996
ADDIU V0, R0, $0001
MFLO T7				// T7 = Move Power × ((Level × 2 ÷ 5) + 2)
NOP
NOP
MULTU T7, T8
MFLO T9				// T9 = Move Power × Attack × ((Level × 2 ÷ 5) + 2)
NOP
DIV T9, T0			// Move Power × Attack × ((Level × 2 ÷ 5) + 2) ÷ Defense
BNEZ T0, $0035AC1C		// If Defense > 0, jump to 0x35AC1C
NOP
BREAK				// Else OMG TRYING TO DIVIDE BY ZERO ABORT ABORT
(0x35AC1C) ADDIU AT, R0, $FFFF
BNE T0, AT, $0035AC34		// If Defense ≠ 0xFFFF, jump to 0x35AC34
LUI AT, $8000
BNE T9, AT, $0035AC34		// If current Damage > 0, jump to 0x35AC34
NOP
BREAK				// Else Breakpoint exception (Division by 0)
MFLO T1				// T1 = Move Power × Attack × ((Level × 2 ÷ 5) + 2) ÷ Defense
ADDIU AT, R0, $0032
NOP
DIV T1, AT
MFLO T2				// T2 = (Move Power × Attack × ((Level × 2 ÷ 5) + 2) ÷ Defense) ÷ 50
ADDU T4, T3, T2
ANDI V1, T4, $FFFF		// V1 = ((Move Power × Attack × ((Level × 2 ÷ 5) + 2) ÷ Defense) ÷ 50) + Previous Hit Damage (Pin Missile...)
SLTI AT, V1, $03E5
BNEZ AT, $0035AC64		// If current Damage < 997, jump to 0x35AC64
SH T4, $0000 (A0)
SH T5, $0000 (A0)
ANDI V1, T5, $FFFF		// Else set V1 to 996
(0x35AC64) ADDIU T6, V1, $0002	// T6 = ((Move Power × Attack × ((Level × 2 ÷ 5) + 2) ÷ Defense) ÷ 50) + Previous Hit Damage + 2
SH T6, $0000 (A0)		// Store Current Damage in 0x801E8126
LW RA, $0014 (SP)
ADDIU SP, SP, $0018
JR RA

Move vs Substitute

  • 0x35AC7C - Move vs Substitute
LUI V0, $843C
LW V0, $523C (V0)
ADDIU SP, SP, $FFE8
SW RA, $0014 (SP)
LBU T6, $004D (V0)	// Load Target's Substitute status to T6
LUI T8, $8439
ANDI T7, T6, $0010
BEQ T7, R0, $0035AF5C	// If T6 & 0x10 == 0, branch to 0x35AF5C - Deal Damage to the Target's HP
NOP
LUI V0, $8439
LW V0, $0240 (V0)
ADDIU AT, R0, $0014
LW T8, $0048 (V0)
BNEL T8, AT, $0035AE08
LHU V1, $002C (V0)
LHU T9, $002C (V0)
LUI A0, $8439
SLL T0, T9, $2
ADDU A0, A0, T0
JAL $0430862C
LW A0, $0010 (A0)

Deal Damage to the Target's HP

  • 0x35AF5C - Deduce the Move Damage from the Target's HP
LW T8, $0288 (T8)		// Load (0x801B35E8) to T8
LUI A2, $843C
ADDIU A2, A2, $4DC4
BNEL T8, R0, $0035AF9C		// If (0x801B35E8) ≠ 0, branch to 0x35AF9C
LW RA, $0014 (SP)
LHU V1, $000C (V0)		// Load Target's Remaining HP to V1
LHU A0, $0000 (A2)		// Load Move Damage to A2
OR A1, V1, R0			// A1 = Target's Remaining HP
SLT AT, A0, V1
BEQ AT, R0, $0035AF90		// If Move Damage ≥ Target's Remaining HP, branch to 0x35AF90
SUBU T9, A1, A0			// T9 = Target's Remaining HP - Move Damage
BEQ R0, R0, $0035AF98		// Branch to 0x35AF98
SH T9, $000C (V0)		// Store T9 to Target's Remaining HP
(0x35AF90) SH V1, $0000 (A2)	// Store Target's Remaining HP to Move Damage
SH R0, $000C (V0)		// Store 0 to Target's Remaining HP
(0x35AF98) LW RA, $0014 (SP)
(0x35AF9C) ADDIU SP, SP, $0018
JR RA
NOP

Move Success test

Accuracy and Evasion modifiers
  • 0x35B050 - Accuracy and Evasion modifiers
LUI T6, $8439
LBU T6, $AC60 (T6)			// Load Move User (Player 1 or Player 2) to T6
ADDIU AT, R0, $0001
LUI V0, $8439
BNE T6, AT, $0035B074			// If Move User ≠ Player 1, branch to 0x35B074
LUI A0, $843C
LUI V0, $8439
BEQ R0, R0, $0035B078			// Branch to 0x35B078
ADDIU V0, V0, $ACD4
(0x35B074) ADDIU V0, V0, $ACB8
(0x35B078) LW A0, $5238 (A0)
LUI T7, $843C
LW T7, $523C (T7)
LBU V1, $0060 (A0)			// Load Accuracy Level to V1
LBU T0, $0048 (A0)			// Load Move Accuracy to T0
LBU A1, $0061 (T7)			// Load Target's Evasion Level to A1
SLL T9, V1, $1				// T9 = Accuracy Level << 1
ADDU A3, V0, T9
LBU T1, $FFFE (A3)			// Load Accuracy numerator to T1
LBU T3, $FFFF (A3)			// Load Accuracy denominator to T3
ADDIU T8, R0, $000E
MULTU T0, T1				// Multiply Move Accuracy by Accuracy numerator
SUBU A1, T8, A1				// A1 = 14 - Target's Evasion Level
SLL T4, A1, $1				// T4 = Target's Evasion Level << 1
ADDU V1, V0, T4
MFLO T2					// T2 = Move Accuracy × Accuracy numerator
NOP
NOP
DIV T2, T3 
MFLO A2					// A2 = Move Accuracy × (Accuracy numerator ÷ Accuracy denominator)
BNEZ T3, $0035B0D4
NOP
BREAK					// No division by 0
(0x35B0D4) ADDIU AT, R0, $FFFF
BNE T3, AT, $0035B0EC
LUI AT, $8000
BNE T2, AT, $0035B0EC
NOP
BREAK					// No negative Accuracy
(0x35B0EC) BNEL A2, R0, $0035B0FC	// If Adjusted Accuracy ≠ 0, branch to 0x35B0FC
LBU T5, $FFFE (V1)			// Load Evasion numerator to T5
ADDIU A2, R0, $0001			// Else minimum Adjusted Accuracy is 1
LBU T5, $FFFE (V1)			// Load Evasion numerator to T5
(0x35B0FC) LBU T7, $FFFF (V1)		// Load Evasion denominator to T7
MULTU A2, T5
MFLO T6					// T6 = Adjusted Accuracy × Evasion numerator
NOP
NOP
DIV T6, T7
MFLO A2					// A2 = Adjusted Accuracy × (Evasion numerator ÷ Evasion denominator)
BNEZ T7, $0035B124
NOP
BREAK					// No division by 0
(0x35B124) ADDIU AT, R0, $FFFF
BNE T7, AT, $0035B13C
LUI AT, $8000
BNE T6, AT, $0035B13C
NOP
BREAK					// No negative Accuracy
(0x35B13C) BNEL A2, R0, $0035B14C	// If Adjusted Accuracy ≠ 0, branch to 0x35B14C
SLTI AT, A2, $0100
ADDIU A2, R0, $0001			// Else minimum Adjusted Accuracy is 1/255
SLTI AT, A2, $0100
(0x35B14C) BNEZ AT, $0035B158		// If Adjusted Accuracy < 0x100, branch to 0x35B158
NOP
ADDIU A2, R0, $00FF			// Else set the Adjusted Accuracy to 0xFF
(0x35B158) JR RA
SB A2, $0048 (A0)			// Store Adjusted Accuracy in (0x80287B14)
Hyper Beam
  • 0x35B18C - Hyper Beam
LUI V1, $843C
LW V1, $5238 (V1)
ADDIU SP, SP, $FFE8
SW RA, $0014 (SP)
LBU A3, $0045 (V1)		// Load Move Effect to A3
ADDIU AT, R0, $0050
LUI T1, $843C
BNE A3, AT, $0035B1E8		// If Move Effect ≠ 0x50 (Hyper Beam), branch to 0x35B1E8
OR V0, A3, R0			// Copy Move Effect to V0
LBU A0, $004D (V1)
LUI T7, $8439
ANDI T6, A0, $0020
BNEL T6, R0, $0035B1EC
ADDIU V1, R0, $0008
LBU T7, $AC60 (T7)
ADDIU AT, R0, $0001
ORI T8, A0, $0020
BNE T7, AT, $0035B1E8
LUI T9, $843C
SB T8, $004D (V1)
LW T9, $5238 (T9)
LBU A3, $0045 (T9)
OR V0, A3, R0
Dream Eater
  • 0x35B1E8 - Dream Eater
ADDIU V1, R0, $0008
(0x35B1EC) BNE V1, V0, $0035B218	// If Move Effect ≠ 0x08 (Dream Eater), branch to 0x35B218
LUI T4, $843C
LW T1, $523C (T1)
LBU T2, $0015 (T1)			// Load Target Status to T2
ANDI T3, T2, $0007
BNEZ T3, $0035B218			// If the target is Asleep, branch to 0x35B218
NOP
JAL $043708A0				// Else skip the Damage Calculation
NOP
BEQ R0, R0, $0035B390
LW RA, $0014 (SP)
Swift, HP Drain, Substitute
  • 0x35B218 - Swift, Absorb, Mega Drain, Leech Life, Dream Eater
LW T4, $523C (T4)
ADDIU T0, R0, $0011
LBU T5, $004D (T4)		// Load Target's Substitute to T5
ANDI T6, T5, $0010
BEQ T6, R0, $0035B280		// If the Target has no Substitute, branch to 0x35B280
NOP
BEQ T0, V0, $0035B38C		// If Move Effect == 0x11 (Swift), skip the Accuracy check
ADDIU AT, R0, $0003
BEQ V0, AT, $0035B270		// If Move Effect == 0x03 (Absorb, Mega Drain, Leech Life), branch to 0x35B270
NOP
BEQ V1, V0, $0035B270		// If Move Effect == 0x08 (Dream Eater), branch to 0x35B270
LUI T7, $8439
LBU T7, $AC60 (T7)
ADDIU AT, R0, $0001
ANDI A0, A3, $00FF
BNE T7, AT, $0035B280
LUI A1, $8439
ADDIU A1, A1, $ACB0
JAL $0436FD54
ADDIU A2, R0, $0005
BEQ V0, R0, $0035B280
NOP
(0x35B270) JAL $043708A0	// Skip the Damage Calculation (HP Drain Moves can't damage a Substitute)
NOP
BEQ R0, R0, $0035B390
LW RA, $0014 (SP)
Swift, Fly / Dig status
  • 0x35B280 - Skips the Damage calculation if (0x80288538) & 0x40 ≠ 0, sets AT to 1 if Move Effect < 0x12, and another Swift check
LUI A0, $843C
LW A0, $523C (A0)
LUI V1, $843C
LW V1, $5238 (V1)
LBU T8, $004C (A0)	// Load (0x80288538) to T8
ADDIU T0, R0, $0011
LBU V0, $0045 (V1)	// Load Move Effect to V0
ANDI T9, T8, $0040
BEQ T9, R0, $0035B2C0	// If T8 & 0x40 == 0 (Fly / Dig status), branch to 0x35B2C0
SLTI AT, V0, $0012	// Set AT to 1 if Move Effect < 0x12
BEQL T0, V0, $0035B390	// ElseIf Move Effect == Swift, skip the Accuracy check
LW RA, $0014 (SP)
JAL $043708A0		// Else skip the Damage Calculation
NOP
BEQ R0, R0, $0035B390
LW RA, $0014 (SP)
Stat reduction, Conversion, Haze, Light Screen, Reflect
  • 0x35B2C0 - Handles other Moves Effects
BNEZ AT, $0035B2CC		// If Move Effect < 0x12, branch to 0x35B2CC
SLTI AT, V0, $001A		// Set AT to 1 if Move Effect < 0x1A
BNEZ AT, $0035B2E0		// If Effect == Lower stat down 1 level, or Effect == Conversion, or Effect == Haze, branch to 0x35B2E0
(0x35B2CC) SLTI AT, V0, $003A	// Set AT to 1 if Move Effect < 0x3A
BNEZ AT, $0035B300		// If Move Effect < 0x3A, branch to 0x35B300
SLTI AT, V0, $0042		// Set AT to 1 if Move Effect < 0x42
BEQL AT, R0, $0035B304		// If Effect ≠ Lower stat down 2 levels, and Effect ≠ Light Screen, and Effect ≠ Reflect, branch to 0x35B304
LBU T3, $004D (V1)		// Load (0x80287B18) to T3
(0x35B2E0) LBU T1, $004D (A0)	// Load (0x80288538) to T1
ANDI T2, T1, $0002
BEQL T2, R0, $0035B304 		// If (0x80288538) & 2 == 0, branch to 0x35B304
LBU T3, $004D (V1)		// Load (0x80287B18) to T3
JAL $043708A0
NOP
BEQ R0, R0, $0035B390
LW RA, $0014 (SP)
Other Moves
  • 0x35B300 - Other Moves handling
LBU T3, $004D (V1)		// Load (0x80287B18) to T3
(0x35B304) LUI T5, $8439
ANDI T4, T3, $0001
BNEL T4, R0, $0035B390		// If (0x80287B18) & 1 ≠ 0 , skip the Accuracy check
LW RA, $0014 (SP)
LBU T5, $AC60 (T5)		// Load (0x801ADFC0) to T5
ADDIU AT, R0, $0001
BNE T5, AT, $0035B32C		// If (0x801ADFC0) ≠ 1, branch to 0x35B32C
NOP
BEQ T0, V0, $0035B334		// ElseIf Move Effect == Swift, branch to 0x35B334
NOP
(0x35B32C) JAL $04370790	// Jump to 0x35B050 - Accuracy and Evasion modifiers
NOP
(0x35B334) JAL $0436F788
NOP
Move Accuracy check
  • 0x35B33C - 0x35B394 - Move Accuracy check
LUI A0, $843C
ADDIU A0, A0, $4DA2
ANDI V1, V0, $00FF
ADDIU AT, R0, $00FF
BNE V1, AT, $0035B36C	// If (Pseudo-Random Number & 0xFF) ≠ 0xFF, jump to 0x35B36C
SB V0, $0000 (A0)	// Store 1-byte Pseudo-Random Number to (0x801E8102)
JAL $0436F788		// Else branch to 0x35A4EC (new PRNG call, it avoids the 1/256 miss from RBY)
NOP
LUI A0, $843C
ADDIU A0, A0, $4DA2
SB V0, $0000 (A0)
ANDI V1, V0, $00FF
(0x35B36C) LUI T6, $843C
LW T6, $5238 (T6)
LBU T7, $0048 (T6)	// Load Adjusted Accuracy to T7
SLT AT, V1, T7		// Set AT to 1 if PRN < Adjusted Accuracy
BNEL AT, R0, $0035B390	// If the Move hits, jump to 0x35B390
LW RA, $0014 (SP)
JAL $043708A0
NOP
(0x35B38C) LW RA, $0014 (SP)
(0x35B390) ADDIU SP, SP, $0018
JR RA

Applies BURN to ATTACK stat

  • 0x35B404 - Checks if the target is burned, then halves its ATK.
0x35B404: LBU  T6, 0x06A1 (A0)       ;T6 = status_flags
0x35B408: ADDIU V0, A0, 0x068C
0x35B40C: ANDI T7, T6, 0x0010
0x35B410: BEQ  T7, R0, 0x35B434      ;if(status_flags & burn == 0), exit this function
0x35B414: NOP
0x35B418: LHU  T8, 0x002A (V0)       ;T8 = ATK
0x35B41C: ADDIU T1, R0, 0x0001       ;T1 = 1
0x35B420: SRL  T9, T8, 0x1           ;T9 = ATK >> 1
0x35B424: ANDI T0, T9, 0xFFFF        ;T0 = T9 & 0xFFFF
0x35B428: BNEZ T0, 0x35B434          ;if(new_ATK ≠ 0), branch to 0x35B434
0x35B42C: SH   T9, 0x002A (V0)       ;Store ATK >> 1 as the new ATK
0x35B430: SH   T1, 0x002A (V0)       ;Store 1 as the new ATK
0x35B434: JR   RA
0x35B438: NOP

Move Data loading

LUI V1, $843C
ADDIU V1, V1, $5238
LW V0, $0000 (V1)
ADDIU A1, R0, $0006	// Length of a Move array
LUI A0, $8007
LBU T6, $005A (V0)
ADDIU A0, A0, $2B00
MULTU T6, A1
MFLO T7
ADDU T8, A0, T7		// Pointer to the Move ID
LBU T9, $FFFA (T8)	// Load Move ID
SB T9, $0044 (V0)	// Store Move ID in 0x80287B10
LW V0, $0000 (V1)
LBU T0, $005A (V0)
MULTU T0, A1
MFLO T1
ADDU T2, A0, T1		// Pointer to the Move Effect
LBU T3, $FFFB (T2)	// Load Move Effect
SB T3, $0045 (V0)	// Store Move Effect in 0x80287B11
LW V0, $0000 (V1)
LBU T4, $005A (V0)
MULTU T4, A1
MFLO T5
ADDU T6, A0, T5		// Pointer to the Move Power
LBU T7, $FFFC (T6)	// Load Move Power
SB T7, $0046 (V0)	// Store Move Power in 0x80287B12
LW V0, $0000 (V1)
LBU T8, $005A (V0)
MULTU T8, A1
MFLO T9
ADDU T0, A0, T9		// Pointer to the Move Type
LBU T1, $FFFD (T0)	// Load Move Type
SB T1, $0047 (V0)	// Store Move Type in 0x80287B13
LW V0, $0000 (V1)
LBU T2, $005A (V0)
MULTU T2, A1
MFLO T3
ADDU T4, A0, T3		// Pointer to the Move Accuracy
LBU T5, $FFFE (T4)	// Load Move Accuracy
SB T5, $0048 (V0)	// Store Move Accuracy in 0x80287B14
LW V0, $0000 (V1)
LBU T6, $005A (V0)
MULTU T6, A1
MFLO T7
ADDU T8, A0, T7		// Pointer to the Move PP
LBU T9, $FFFF (T8)	// Load Move PP
JR RA
SB T9, $0049 (V0)	// Store Move PP in 0x80287B15

Critical Hit and OHKO message

  • 0x35B940 - Critical Hit and OHKO message
LUI T6, $8439
LW T6, $0240 (T6)
ADDIU SP, SP, $FFE0
SW RA, $0014 (SP)
LHU V0, $002C (T6)	// V0 = (0x80288DBC) (P2 ?)
LUI T8, $8439
LUI V1, $843C
SLTIU V0, V0, $0001	// If V0 < 1, set V0 to 1
SLL T7, V0, $2		// T7 = V0 << 2
ADDU T8, T8, T7
LW T8, $0010 (T8)
LBU V1, $4DA5 (V1)	// Load Critical Hit / OHKO flag to V1
ADDIU AT, R0, $0001
ADDIU T9, T8, $068C
BEQ V1, AT, $0035B994	// If there's a Critical Hit, branch to 0x35B994
SW T9, $001C (SP)
ADDIU AT, R0, $0002
BEQ V1, AT, $0035B9C4	// ElseIf the move is a OHKO, branch to 0x35B9C4
LUI A0, $8439
BEQ R0, R0, $0035B9F0	// Else branch to 0x35B9F0
LW T4, $001C (SP)
  • 0x35B994 - Critical Hit message
LUI A0, $8439
LW A0, $01A0 (A0)
ADDIU A1, R0, $001D
JAL $043179F4
ADDIU A0, A0, $0148
LUI T1, $8439
LW T1, $0240 (T1)
ADDIU T0, R0, $0002
LUI V1, $843C
SB T0, $001A (T1)
BEQ R0, R0, $0035B9EC	// Branch to 0x35B9EC
LBU V1, $4DA5 (V1)
  • 0x35B9C4 - OHKO message
LW A0, $01A0 (A0)
ADDIU A1, R0, $001E
JAL $043179F4
ADDIU A0, A0, $0148
LUI T3, $8439
LW T3, $0240 (T3)
ADDIU T2, R0, $0002
LUI V1, $843C
SB T2, $001A (T3)
LBU V1, $4DA5 (V1)
(0x35B9EC) LW T4, $001C (SP)
(0x35B9F0) LUI AT, $843C
SB V1, $005B (T4)
LW RA, $0014 (SP)
SB R0, $4DA5 (AT)	// Set Critical Hit and OHKO flag to 0
ADDIU SP, SP, $0020
JR RA
NOP

OHKOs and Fixed Damage Moves

  • 0x35BA0C - OHKO and Fixed Damage Moves
LUI V1, $843C
LW V1, $5238 (V1)
ADDIU SP, SP, $FFE0
SW RA, $001C (SP)
SW S0, $0018 (SP)
LBU V0, $0045 (V1)		// Load Move Effect in V0
ADDIU AT, R0, $0026
BEQ V0, AT, $0035BA4C		// If Move Effect == OHKO, branch to 0x35BA4C
ADDIU AT, R0, $0028
BEQ V0, AT, $0035BA58		// ElseIf Move Effect == Super Fang, branch to 0x35BA58
LUI T6, $843C
ADDIU AT, R0, $0029
BEQL V0, AT, $0035BA98		// ElseIf Move Effect == (Dragon Rage, Sonicboom, Psywave, Night Shade, Seismic Toss), branch to 0x35BA98
LBU V0, $0044 (V1)		// Load Move Effect in V0
BEQ R0, R0, $0035BB18		// Else branch to 0x35BB18 - Copy Current Damage
LBU T1, $0046 (V1)		// Load Move Power to T1
(0x35BA4C) LUI V1, $843C
BEQ R0, R0, $0035BB68		// Branch to 0x35BB68
LHU V1, $4DC4 (V1)
(0x35BA58) LW T6, $523C (T6)
LUI A0, $843C
ADDIU A0, A0, $4DC4
LHU T7, $000C (T6)		// Load Target's HP to T7
ADDIU T9, R0, $0001
BGEZ T7, $0035BA7C		// If Target's HP ≥ 0, branch to 0x35BA7C
SRA T8, T7, $1			// T8 = Target's HP >> 1
ADDIU AT, T7, $0001
SRA T8, AT, $1
(0x35BA7C) ANDI V1, T8, $FFFF
BNEZ V1, $0035BB68
SH T8, $0000 (A0)
SH T9, $0000 (A0)
BEQ R0, R0, $0035BB68		// Branch to 0x35BB68
ANDI V1, T9, $FFFF
LBU V0, $0044 (V1)
(0x35BA98) ADDIU AT, R0, $0031
BEQ V0, AT, $0035BAC4
ADDIU AT, R0, $0045
BEQ V0, AT, $0035BABC
ADDIU AT, R0, $0052
BEQ V0, AT, $0035BACC
ADDIU AT, R0, $0065
BNEL V0, AT, $0035BAD8
LBU S0, $0026 (V1)
(0x35BABC) BEQ R0, R0, $0035BB00
LBU S0, $0026 (V1)
(0x35BAC4) BEQ R0, R0, $0035BB00
ADDIU S0, R0, $0014
(0x35BACC) BEQ R0, R0, $0035BB00
ADDIU S0, R0, $0028
LBU S0, $0026 (V1)
(0x35BAD8) SRA T0, S0, $1
ADDU S0, T0, S0
JAL $0436F6D8
NOP

Copy Current Damage

  • 0x35BB14 - Copy Current Damage to (0x801E8100)
LBU T1, $0046 (V1)			// Load Move Power to T1
(0x35BB18) BEQL T1, R0, $0035BB7C	// If Move Power == 0, branch to 0x35BB7C
LW RA, $001C (SP)
LBU T2, $004C (V1)			// Load (0x80287B18) to T2
LUI A0, $843C
LUI A1, $843C
ANDI T3, T2, $0004
BEQ T3, R0, $0035BB58			// If (0x80287B18) & 4 == 0, branch to 0x35BB58
ADDIU A0, A0, $4DC4
LUI A0, $843C
ADDIU A0, A0, $4DC4
ADDIU A1, A1, $4DA0
LHU T4, $0000 (A1)
LHU V1, $0000 (A0)
ADDU T5, T4, V1
BEQ R0, R0, $0035BB68			// Branch to 0x35BB68
SH T5, $0000 (A1)
(0x35BB58) LHU V1, $0000 (A0)		// Load Current Damage to A1
LUI A1, $843C
ADDIU A1, A1, $4DA0
SH V1, $0000 (A1)			// Store Current Damage to (0x801E8100)
(0x35BB68) BEQL V1, R0, $0035BB7C	// If Current Damage == 0, branch to 0x35BB7C
LW RA, $001C (SP)
JAL $043703BC
NOP
LW RA, $001C (SP)
(0x35BB7C) LW S0, $0018 (SP)
ADDIU SP, SP, $0020
JR RA
NOP

Same Type Attack Bonus, Weakness, Resistance

  • 0x35C234 - 0x35C3C4 - Loads Move ID, Move Type, Defending Pokémon Types, Weaknesses and Resistances
ADDIU SP, SP, $FFF8
LUI A2, $843C
LW A2, $5238 (A2)
SW S0, $0004 (SP)
LUI T0, $843C
LUI T6, $8439
LW T0, $523C (T0)
LBU T6, $AC60 (T6)			;T6 = (T6+0xAC60)
ADDIU AT, R0, $0001			;AT = 1
ADDIU V0, R0, $0003			;V0 = 3
(0x35C25C) LBU A1, $001C (A2)		;A1 = Attacking Pokémon Type 1
LBU A3, $001D (A2)			;A3 = Attacking Pokémon Type 2
LBU T1, $0047 (A2)			;T1 = Move Type
LBU V1, $001C (T0)			;V1 = Defending Pokémon Type 1
BNE T6, AT, $0035C284
LBU A0, $001D (T0)			;A0 = Defending Pokémon Type 2
LBU T7, $0044 (A2)			;T7 = Move ID
ADDIU AT, R0, $00A5
BEQL T7, AT, $0035C3F4			;If Move is Struggle, jump to 0x35C3F4
LW S0, $0004 (SP)
BEQ A1, T1, $0035C290			;If Move Type = Attacking Pokémon Type 1, jump to 0x35C290
OR A2, T1, R0				;Copy Move Type to A2
BNE A3, T1, $0035C2BC			;If Move Type ≠ Attacking Pokémon Type 2, jump to 0x35C2BC
(0x35C290) LUI T1, $843C
ADDIU T1, T1, $4DC4
LUI T2, $843C
LHU A1, $0000 (T1)			;A1 = (T1)
ADDIU T2, T2, $4DB3
LBU T6, $0000 (T2)			;T6 = ?
SRA T8, A1, $1
ADDU T9, A1, T8
ORI T7, T6, $0080
SH T9, $0000 (T1)
SB T7, $0000 (T2)
(0x35C2BC) LUI A1, $8439
ADDIU A3, A1, $ACF0			;A3 = 0x801AE050
LBU T8, $0000 (A3)			;T8 = Next value from Weaknesses and Resistances array
LUI T1, $843C
LUI T2, $843C
ADDIU T3, R0, $00FF
ADDIU T2, T2, $4DB3
BEQ T3, T8, $0035C3A8
ADDIU T1, T1, $4DC4
LUI T9, $8439
ADDIU T9, T9, $ACF0			;T9 = 0x801AE050
LUI T5, $843C
ADDIU T5, T5, $4DA4
LBU A1, $0000 (T9)
ADDIU S0, R0, $0001
ADDIU T4, R0, $000A
(0x35C2FC) BNEL A2, A1, $0035C39C	;If Move Type ≠ array value, jump to 0x35C39C
LBU A1, $0003 (A3)			;Next value in array stored in A1 at the same time as jump to 0x35C39C
LBU A1, $0001 (A3)			;Load next Weakness / Resistance
BEQL V1, A1, $0035C31C			;If A1 = Defending Pokémon Type 1, jump to 0x35C31C
LBU T0, $0002 (A3)
BNEL A0, A1, $0035C39C			;If A1 ≠ Defending Pokémon Type 2, jump to 0x35C39C
LBU A1, $0003 (A3)
LBU T0, $0002 (A3)			;T0 = Multiplier
(0x35C31C) LHU A1, $0000 (T1)
BEQ T0, R0, $0035C348			;If Multiplier == 0, branch to 0x35C348
NOP
SLTI AT, T0, $000B
BNEL AT, R0, $0035C344			;If Multiplier ≥ 11, branch to 0x35C344
ADDIU V0, V0, $FFFF			;V0--
ADDIU V0, V0, $0001			;V0++
BEQ R0, R0, $0035C348			;Branch to 0x35C348
ANDI V0, V0, $00FF			;V0 &= 0xFF
ADDIU V0, V0, $FFFF			;V0--
(0x35C344) ANDI V0, V0, $00FF		;V0 &= 0xFF
(0x35C348) MULTU A1, T0
MFLO T6					;T6 = A1 × Multiplier
NOP
NOP
DIV T6, T4
MFLO T7					;T7 = T6 ÷ T4
ANDI T8, T7, $FFFF			;T8 = T7 - 1
BNEZ T4, $0035C370			;If T4 ≠ 0, branch to 0x35C370
NOP
BREAK					;No division by zero
(0x35C370) ADDIU AT, R0, $FFFF
BNE T4, AT, $0035C388
LUI AT, $8000
BNE T6, AT, $0035C388
NOP
BREAK
SH T7, $0000 (T1)
BNEL T8, R0, $0035C39C
LBU A1, $0003 (A3)
SB S0, $0000 (T5)
LBU A1, $0003 (A3)
(0x35C39C) ADDIU A3, A3, $0003
BNE T3, A1, $0035C2FC			;Going through the array...
NOP
ADDIU T9, V0, $FFFF
SLTIU AT, T9, $0005
BEQ AT, R0, $0035C3F0
SLL T9, T9, $2
LUI AT, $8439
ADDU AT, AT, T9
LW T9, $DC50 (AT)
JR T9

Counter

  • 0x35C3F8 - Counter
ADDIU SP, SP, $0008
LUI T6, $843C
LW T6, $5238 (T6)
ADDIU SP, SP, $FFE8
SW RA, $0014 (SP)
LBU T7, $005A (T6)		// Load Move ID in T7
ADDIU V1, R0, $0044
LUI A0, $843C
BEQ V1, T7, $0035C428		// If it is Counter, jump to 0x35C428
ADDIU A0, A0, $4DA4
BEQ R0, R0, $0035C4C8		// Else jump to 0x35C4C8
ADDIU V0, R0, $0001		// Set V0 to 1
(0x35C428) ADDIU T8, R0, $0001
SB T8, $0000 (A0)		// Set Counter Flag to 1
LUI V0, $843C
LW V0, $523C (V0)
LBU T9, $005A (V0)		// Load Move ID of the last move used in T9
BNEL V1, T9, $0035C450		// If the last move used is not Counter, jump to 0x35C450
LBU T0, $0046 (V0)
BEQ R0, R0, $0035C4C8		// Else get out of this function
OR V0, R0, R0
LBU T0, $0046 (V0)
(0x35C450) BNEL T0, R0, $0035C464
LBU V1, $0047 (V0)
BEQ R0, R0, $0035C4C8
OR V0, R0, R0
LBU V1, $0047 (V0)		// Load type of the last move used
(0x35C464) ADDIU AT, R0, $0001
BEQ V1, R0, $0035C478		// Is it Normal type ?
NOP
BNE V1, AT, $0035C4C8		// Is it Fighting type ?
OR V0, R0, R0
(0x35C478) LUI V1, $843C
ADDIU V1, V1, $4DC4
LHU V0, $0000 (V1)		// Load damage done by the last move used
ORI AT, R0, $8000
BNEZ V0, $0035C498		// If the last move dealt damage, jump to 0x35C498
SLT AT, V0, AT
BEQ R0, R0, $0035C4C8		// Else get out of this function
OR V0, R0, R0
(0x35C498) BNEZ AT, $0035C4AC
SLL T2, V0, $1			// Multiply damage ×2
ORI T1, R0, $FFFF
BEQ R0, R0, $0035C4B0
SH T1, $0000 (V1)
SH T2, $0000 (V1)
SB R0, $0000 (A0)
LUI AT, $843C
JAL $043708CC
SB R0, $4DA5 (AT)
BEQ R0, R0, $0035C4C8
OR V0, R0, R0
(0x35C4C8) LW RA, $0014 (SP)
ADDIU SP, SP, $0018
JR RA

¡Un Golpe Crítico!

  • 0x35C4D8 - Determines the Critical Hit Ratio.
No Focus Energy: (Base Speed + 76) >> 2
W/ Focus Energy: (Base Speed + 76) >> 2 << 2 + 160 >> 1
LUI A0, $8439 LBU A0, $AC60 (A0) ADDIU SP, SP, $FFE0 ADDIU A1, R0, $0001 LUI AT, $843C SW RA, $0014 (SP) BNE A1, A0, $0035C52C // If A0 ≠ 1, jump to 0x35C52C SB R0, $4DA5 (AT) LUI V0, $843C LW V0, $5238 (V0) LUI V1, $8007 LBU T6, $000B (V0) SLL T7, T6, $2 SUBU T7, T7, T6 SLL T7, T7, $3 SUBU T7, T7, T6 ADDU V1, V1, T7 LBU V1, $0F8D (V1) // Load Base Speed to V1 ADDIU V1, V1, $004C // CH Ratio = Base Speed + 76 BEQ R0, R0, $0035C558 // Jump to 0x35C558 SRA V1, V1, $2 // CH Ratio ÷ 4 (0x35C52C) LUI V0, $843C LW V0, $5238 (V0) LUI V1, $8007 LBU T8, $000B (V0) SLL T9, T8, $2 SUBU T9, T9, T8 SLL T9, T9, $3 SUBU T9, T9, T8 ADDU V1, V1, T9 LBU V1, $0F8D (V1) // Load CH Ratio to V1 SRA V1, V1, $1 // CH ratio ÷ 2 (0x35C558) LBU T0, $0046 (V0) BNEZ T0, $0035C56C NOP BEQ R0, R0, $0035C67C OR V0, R0, R0 (0x35C56C) BNE A1, A0, $0035C5C0 ADDIU A2, R0, $0004 LBU T1, $004D (V0) // Load CH Rate multiplier in T1 LUI A1, $8439 ADDIU A1, A1, $AE4C ANDI T2, T1, $0004 BEQ T2, R0, $0035C598 // If Focus Energy is not active, jump to 0x35C598 ADDIU A2, R0, $0004 // Size of the array (0x37570C) to be checked at 0x35A614 SLL V1, V1, $2 // Adjusted CH Ratio × 4 (shift left logical) BEQ R0, R0, $0035C59C // Jump to 0x35C59C ADDIU V1, V1, $00A0 // Adjusted CH Ratio + 160 (0x35C598) SLL V1, V1, $1 // CH Ratio ×2 (shift left logical) (0x35C59C) LBU A0, $0044 (V0) // Load Move ID in A0 JAL $0436FD54 // Jump to 0x35A614 (Checks if the Move has a High Critical Hit Rate)

Move Power

  • 0x35C558 - Loads Move Power and ?
LBU T0, $0046 (V0)		// Loads Move Power to T0
BNEZ T0, $0035C56C		// If Move Power > 0, jump to 0x35C56C
NOP
BEQ R0, R0, $0035C67C		// Else jump to 0x35C67C 
OR V0, R0, R0
(0x35C56C) BNE A1, A0, $0035C5C0
ADDIU A2, R0, $0004
LBU T1, $004D (V0)
LUI A1, $8439
ADDIU A1, A1, $AE4C
ANDI T2, T1, $0004
BEQ T2, R0, $0035C598
ADDIU A2, R0, $0004
SLL V1, V1, $2
BEQ R0, R0, $0035C59C
ADDIU V1, V1, $00A0
SLL V1, V1, $1
LBU A0, $0044 (V0)		// Loads Move ID to A0
JAL $0436FD54

High Critical Hit Moves

  • 0x35C5A4 - High Critical Hit Moves
SW V1, $0018 (SP)
BEQ V0, R0, $0035C5B8		// If the move is not a High Critical Rate Move, jump to 0x35C5B8
LW V1, $0018 (SP)		// Load Adjusted CH Ratio in V1
BEQ R0, R0, $0035C624		// Jump to 0x35C624
SLL V1, V1, $2			// Adjusted CH Ratio × 4
(0x35C5B8) BEQ R0, R0, $0035C624
SRA V1, V1, $1			// Adjusted CH Ratio ÷ 2
  • 0x35C5C0 - ?
LBU T3, $004D (V0)
LUI A1, $8439
ADDIU A1, A1, $AE4C
ANDI T4, T3, $0004
BEQL T4, R0, $0035C5E4		// Jump to 0x35C5E4 if T4 & T3 ≠ 4
SLL V1, V1, $1			// CH Ratio << 1
BEQ R0, R0, $0035C5F4
SRA V1, V1, $1			// CH Ratio >> 1
SLL V1, V1, $1			// CH Ratio << 1
SLTI AT, V1, $0100
BNEL AT, R0, $0035C5F8
LBU A0, $0044 (V0)
ADDIU V1, R0, $00FF
LBU A0, $0044 (V0)
JAL $0436FD54

  • 0x35C5FC - Caps CH Ratio at 255
SW V1, $0018 (SP)
BEQ V0, R0, $0035C620
LW V1, $0018 (SP)
SLL V1, V1, $2
SLTI AT, V1, $0100
BNEL AT, R0, $0035C628
SLTI AT, V1, $0100
BEQ R0, R0, $0035C624
ADDIU V1, R0, $00FF
SRA V1, V1, $1
(0x35C624) SLTI AT, V1, $0100
BNEZ AT, $0035C634		// If Adjusted CH Ratio ÷ 2 < 256, jump to 0x35C634
NOP
ADDIU V1, R0, $00FF		// If Adjusted CH Ratio ÷ 2 ≥ 256, set it to 255
(0x35C634) BGTZ V1, $0035C640	// If Adjusted CH Ratio > 0, jump to 0x35C640
NOP
ADDIU V1, R0, $0001		// Adjusted CH Ratio is at least 1/256
(0x35C640) JAL $0436F6D8

Critical Hit check

  • 0x35C648 - Compares Pseudo-Random Number and Adjusted Critical Hit Ratio, sets CH flag if it is a Critical Hit
LW V1, $0018 (SP)		// Load Adjusted Critical Hit Ratio
LUI A0, $843C
ANDI T5, V0, $00FF		// Copies 1-byte PRN from previous PRNG call to T5
ADDIU A0, A0, $4DA2
SLT AT, T5, V1
BNEZ AT, $0035C66C		// If PRN < Adjusted CH Ratio, jump to 0x35C66C
SB V0, $0000 (A0)		// Store 1-byte PRN to (0x801E8101)
BEQ R0, R0, $0035C67C		// Jump to 0x35C67C
OR V0, R0, R0			// Set V0 to 0
(0x35C66C) ADDIU T6, R0, $0001	// Set T6 to 1
LUI AT, $843C
SB T6, $4DA5 (AT)		// Set CH flag at (0x801E8104) to 1
ADDIU V0, R0, $0001		// Set V0 to 1
(0x35C67C) LW RA, $0014 (SP)
ADDIU SP, SP, $0020
JR RA				// Onto damage calculation...

Confusion check

  • 0x35CA94 - Makes a confused Pokémon attack itself if Pseudo-Random Number ≥ 0x80
LUI A0, $843C
ANDI T7, V0, $00FF
ADDIU A0, A0, $4DA2
SLTI AT, T7, $0080
BNEZ AT, $0035CB90          ;if(PRN < 0x80), get out
SB V0, $0000 (A0)
JAL $043180AC
NOP

0x35CA54

LUI T9, $8439
LW T9, $0240 (T9)
ADDIU T8, R0, $0014
LUI A0, $8439
SW T8, $0048 (T9)
LW V1, $0000 (S0)
ADDIU A1, R0, $000E
LBU T2, $004C (V1)
ANDI T3, T2, $0080
SB T3, $004C (V1)
LW A0, $01A0 (A0)
JAL $043179F4
ADDIU A0, A0, $0148
LUI V0, $843C
LW V0, $523C (V0)
LW T4, $0000 (S0)
LUI AT, $843C
LHU T5, $002C (V0)
ADDIU T8, R0, $0028
SH T5, $0026 (SP)
LHU T6, $002C (T4)
SH T6, $002C (V0)
LW V1, $0000 (S0)
LBU T7, $0045 (V1)
SB T7, $0025 (SP)
SB R0, $0045 (V1)
SB R0, $4DA5 (AT)
LW T9, $0000 (S0)
SB T8, $0046 (T9)
LW T2, $0000 (S0)
JAL $043700F0
SB R0, $0047 (T2)
JAL $04370260
NOP
LBU T3, $0025 (SP)
LW T5, $0000 (S0)
LUI T6, $843C
LUI T7, $843C
SB T3, $0045 (T5)
LW T6, $523C (T6)
LHU T4, $0026 (SP)
LUI AT, $843C
SH T4, $002C (T6)
LW V1, $0000 (S0)
LW T7, $523C (T7)
SW V1, $002C (SP)
SW T7, $0000 (S0)
JAL $043703BC
SW V1, $523C (AT)
LW T8, $0000 (S0)
LW V1, $002C (SP)
LUI AT, $843C
SW T8, $523C (AT)
BEQ R0, R0, $0035CC94
SW V1, $0000 (S0)
LW V1, $0000 (S0)
LBU V0, $0057 (V1)
BEQL V0, R0, $0035CC10
LBU T9, $0015 (V1)
LBU T9, $005A (V1)
BNEL T9, V0, $0035CC10
LBU T9, $0015 (V1)
LBU T2, $004C (V1)
LUI A1, $8007
ADDIU A0, R0, $001D
ANDI T3, T2, $FFEF
SB T3, $004C (V1)
LW T5, $0000 (S0)
LBU T4, $005A (T5)
SLL T6, T4, $2
SUBU T6, T6, T4
SLL T6, T6, $2
ADDU A1, A1, T6
JAL $0002D5D4
LW A1, $2330 (A1)

Full Paralysis check

  • 0x35CC24 - Prevents a Paralyzed Pokémon from attacking if Pseudo-Random Number < 0x3F
LUI A0, $843C
ANDI T3, V0, $00FF
ADDIU A0, A0, $4DA2
SLTI AT, T3, $003F             ;63/256
BEQ AT, R0, $0035CCAC          ;if(PRN ≥ 0x3F), get out of this function
SB V0, $0000 (A0)
LUI T5, $8439
LW T5, $0240 (T5)
LUI A0, $8439
LHU T4, $002C (T5)
SLL T6, T4, $2                 ;T6 = Status flag × 4
ADDU A0, A0, T6                ;A0 = Pointer to Fully Paralyzed text
JAL $0430862C                  ;Display Fully Paralyzed text

Two Turn Move

  • 0x35CFE8 - Charging Move
LBU V0, $0045 (V1)		// Loads P2's Move Effect
ADDIU AT, R0, $0027
LUI T5, $8439
BEQ V0, AT, $0035D004		// If charging attack (e.g. Razor Wind, Fly), jump to 0x35D004
ADDIU AT, R0, $002B
BNE V0, AT, $0035D034		// Else JAL 0x4317BDC
NOP
(0x35D004) LBU T5, $AC60 (T5)
ADDIU AT, R0, $0001
BNE T5, AT, $0035D018		// If this is the charge turn, JAL 0x4376768
LUI AT, $843C
SH R0, $4DC4 (AT)
JAL $04376768
NOP
LUI V1, $843C
LW V1, $5238 (V1)
LBU T6, $005A (V1)
BEQ R0, R0, $0035D3F8
SB T6, $0058 (V1)
(0x35D034) JAL $04317BDC
NOP

? (related to Accuracy; to document)

  • 0x35D134 - ?
LUI T3, $8439
LBU T3, $AC60 (T3)		// Load (0x801ADFC0) to T3
ADDIU AT, R0, $0001
LUI V1, $843C
BNE T3, AT, $0035D170		// If (0x801ADFC0) ≠ 1, branch to 0x35D170 (Skip this function)
NOP
LW V1, $5238 (V1)
LUI T6, $8007
LBU T4, $005A (V1)		// T4 = Move ID
SLL T5, T4, $2
SUBU T5, T5, T4
SLL T5, T5, $1
ADDU T6, T6, T5			// T6 = 0x80070000 + Move ID × 6
LBU T6, $2AFE (T6)		// T6 = Move Accuracy
SB T6, $0048 (V1)		// Store Move Accuracy to (0x80287B14)
(0x35D170) JAL $043708CC	// Jump to 0x35B18C
NOP

Mirror Move, Metronome

  • 0x35D178 - Mirror Move, Metronome
LUI T7, $843C
LBU T7, $4DA4 (T7)
LUI T8, $843C
BEQ T7, R0, $0035D1A8
NOP
LW T8, $5238 (T8)
ADDIU AT, R0, $0007
LBU A0, $0045 (T8)
BNE A0, AT, $0035D1B8
OR A1, A0, R0
BEQ R0, R0, $0035D1BC
ADDIU AT, R0, $0009
(0x35D1A8) LUI T9, $843C
LW T9, $5238 (T9)
(0x35D1B0) LBU A0, $0045 (T9)		// Load Move Effect in A0
OR A1, A0, R0				// A1 = A0
(0x35D1B8) ADDIU AT, R0, $0009
(0x35D1BC) BEQ A1, AT, $0035D1D8	// If Move Effect == Mirror Move, branch to 0x35D1D8
ADDIU A2, R0, $001B			// A2 = 0x1B
ADDIU AT, R0, $0053
BEQ A1, AT, $0035D1F8			// If Move Effect == Metronome, branch to 0x35D1F8
NOP
BEQ R0, R0, $0035D20C			// Else branch to 0x35D20C
LUI A1, $8439
(0x35D1D8) JAL $043718E4
NOP
  • 0x35D1E0 - ?
BEQ V0, R0, $0035D3F0
LUI AT, $843C
LUI V1, $843C
SB R0, $4DB5 (AT)
(0x35D1F0) BEQ R0, R0, $0035CFE8	// Branch to 0x35CFE8 - Two Turn Move
LW V1, $5238 (V1)
(0x35D1F8) JAL $04371564
NOP
LUI V1, $843C
BEQ R0, R0, $0035CFE8			// Branch to 0x35CFE8 - Two Turn Move
LW V1, $5238 (V1)
(0x35D20C) JAL $0436FD54		// Jump to 0x35A614 - Status Effects and High Critical Hit Rate
ADDIU A1, A1, $AE04

Extra Effects

No extra Effect against same Type

  • 0x35E810 - Disables some extra Effects if the Defending Pokémon shares a type with the Move (e.g. Body Slam against Tauros)
LW RA, $0014 (SP)
LUI V0, $843C
LW V0, $5238 (V0)
LBU T6, $001C (A1)	// Load Pokémon Type #1 in A1
LBU V1, $0047 (V0)	// Load Move Type in V1
BEQL T6, V1, $0035EA78	// If Pokémon Type #1 == Move Type, no extra effect
LW RA, $0014 (SP)
LBU T7, $001D (A1)	// Load Pokémon Type #2 in A1
BEQL T7, V1, $0035EA78	// If Pokémon Type #2 == Move Type, no extra effect
LW RA, $0014 (SP)
  • 0x35E838 - ?
LBU T8, $0045 (V0)
LUI T9, $8439
SLTI AT, T8, $0007
BNEZ AT, $0035E86C	// If T8 < 0x07, branch to 0x35E86C
NOP
LBU T9, $AC60 (T9)
ADDIU AT, R0, $0002
BEQ T9, AT, $0035E88C	// If T9 == 0x02, branch to 0x35E88C
NOP

Burn, Freeze, Paralysis extra Effect

Blizzard check
  • 0x35E85C - Checks if the Move is Blizzard
LBU T2, $0044 (V0)	// Load Move ID in T2
ADDIU AT, R0, $003B	// Blizzard ID
BNE T2, AT, $0035E88C	// If Move ID ≠ 0x3B, branch to 0x35E88C
NOP
(0x35E86C) JAL $0436F6D8
NOP
Effect chances
  • 0x35E874 - 26/256 chance
LUI A3, $843C
SLTI AT, V0, $001A	// Effect chance
BNEZ AT, $0035E8A4	// If 1-byte PRN < 0x1A, branch to 0x35E8A4
ADDIU A3, A3, $523C
BEQ R0, R0, $0035EA78
LW RA, $0014 (SP)
(0x35E88C) JAL $0436F6D8
NOP
  • 0x35E894 - 77/256 chance
LUI A3, $843C
SLTI AT, V0, $004D	// Effect chance
BNEZ AT, $0035E8A4	// If 1-byte PRN < 0x4D, branch to 0x35E8A4
ADDIU A3, A3, $523C
BRN FRZ PAR Extra Effect check
  • 0x35E8A4 - Branch to the appropriate extra Effect
LUI T3, $843C
LW T3, $5238 (T3)
ADDIU AT, R0, $0004	// 0x04 - Burn
LBU V0, $0045 (T3)	// Load Move Effect to V0
BEQ V0, AT, $0035E8F0	// If V0 == 0x04, branch to 0x35E8F0
ADDIU AT, R0, $0005	// 0x05 - Freeze
BEQ V0, AT, $0035E96C	// If V0 == 0x05, branch to 0x35E96C
LUI T2, $8439
ADDIU AT, R0, $0006	// 0x06 - Paralysis
BEQ V0, AT, $0035EA00	// If V0 == 0x06, branch to 0x35EA00
ADDIU AT, R0, $0022	// 0x22 - Burn (Fire Blast)
BEQ V0, AT, $0035E8F0	// If V0 == 0x22, branch to 0x35E8F0
ADDIU AT, R0, $0023	// 0x23 - Freeze (Blizzard)
BEQ V0, AT, $0035E96C	// If V0 == 0x23, branch to 0x35E96C
ADDIU AT, R0, $0024	// 0x24 - Paralysis (Body Slam)
BEQL V0, AT, $0035EA04	// If V0 == 0x24, branch to 0x35EA04
LW T3, $0000 (A3)
BEQ R0, R0, $0035EA78	// Else branch to 0x35EA78
LW RA, $0014 (SP)
Burn
  • 0x35E8F0 - Burn extra Effect
LW T5, $0000 (A3)
ADDIU T4, R0, $0010
LUI T6, $8439
SB T4, $0015 (T5)
LW T6, $0240 (T6)
LUI A0, $8439
LHU V0, $002C (T6)
SLTIU V0, V0, $0001
SLL T7, V0, $2
ADDU A0, A0, T7
JAL $04370B44
LW A0, $0010 (A0)
0x35E920
LUI T8, $8439
LW T8, $0240 (T8)
LUI A0, $8439
LHU V0, $002C (T8)
SLTIU V0, V0, $0001
SLL T9, V0, $2
ADDU A0, A0, T9
JAL $0430862C
LW A0, $0010 (A0)


0x35E944
ADDIU A0, R0, $0019
JAL $0002D5D4
OR A1, V0, R0
0x35E950
LUI A0, $8439
LW A0, $01A0 (A0)
ADDIU A1, R0, $FF8A
JAL $043179F4
ADDIU A0, A0, $0208
0x35E964
BEQ R0, R0, $0035EA78
LW RA, $0014 (SP)
Freeze
  • 0x35E96C - Freeze extra Effect
LW T2, $0240 (T2)
LUI A0, $8439
LHU V0, $002C (T2)      ;load (0x80288DBE) to V0
SLTIU V0, V0, $0001     ;if (0x80288DBE) == 0, V0 = 1
SLL T3, V0, $2
ADDU A0, A0, T3
JAL $04308A4C           ;jump to 0x2F330C
LW A0, $0010 (A0)       ;A0 = (0x801B3374)
0x35E98C
LUI A3, $843C
BNEZ V0, $0035EA74
ADDIU A3, A3, $523C
LW A1, $0000 (A3)
ADDIU T6, R0, $0020
LUI T8, $8439
LBU T4, $004D (A1)
LUI A0, $8439
ANDI T5, T4, $FFDF
SB T5, $004D (A1)
LW T7, $0000 (A3)
SB T6, $0015 (T7)
LW T8, $0240 (T8)
LHU V0, $002C (T8)
SLTIU V0, V0, $0001
SLL T9, V0, $2
ADDU A0, A0, T9
JAL $0430862C
LW A0, $0010 (A0)
0x35E9D8
ADDIU A0, R0, $0019
JAL $0002D5D4
OR A1, V0, R0

Acid, Aurora Beam, Bubble, Bubblebeam, Psychic

Effect chance
  • 0x35F190 - 85/256 chance
LUI A1, $843C
SLTI AT, V0, $0055
ADDIU A1, A1, $523C
LW A2, $0024 (SP)	// Load Move Effect to A2
BEQ AT, R0, $0035F4C4	// If PRN ≥ 0x55, branch to 0x35F4C4
LW A3, $0020 (SP)	// Else load the amount of Levels to decrease to A3
ADDIU A2, A2, $FFBC	// A2 = Move Effect - 0x44
BEQ R0, R0, $0035F228	// Branch to 0x35F228
LW V0, $0000 (A1)
Lower stat n Levels
  • 0x35F228 - Lower Target's stat n Levels
ADDU V1, V0, A2				// Pointer to the Target's stat Level
LBU A0, $005C (V1)			// A0 = Target's stat Level
ADDIU T0, R0, $0001
SLTI AT, A2, $0004			// Set AT to 1 if Move Effect is between 0x44 and 0x47
BEQ T0, A0, $0035F4C4			// If Target's stat Level is at -6, skip this function
SUBU T4, A0, A3				// T4 = Target's stat Level - n
SB T4, $005C (V1)			// Store Adjusted Target's stat Level in (0x80288548)
LW T5, $0000 (A1)
ADDIU T7, R0, $0001			// T7 = 1
ADDU V1, T5, A2
LBU T6, $005C (V1)			// T6 = Adjusted Target's stat Level
BGTZL T6, $0035F264			// If Adjusted Target's stat Level > 0, branch to 0x35F264
SW R0, $0028 (SP)
SB T7, $005C (V1)			// Else store 1 in (0x80288548)
SW R0, $0028 (SP)
(0x35F264) BEQ AT, R0, $0035F37C	// If Effect is not between 0x44 and 0x47, branch to 0x35F37C
SW R0, $002C (SP)			// 00s (0x80081654)
BEQL A2, R0, $0035F2A0			// If stat reduced is Attack, branch to 0x35F2A0
LW V0, $0000 (A1)
BEQL A2, T0, $0035F2B8			// If stat reduced is Defense, branch to 0x35F2B8
LW V0, $0000 (A1)
ADDIU AT, R0, $0002
BEQL A2, AT, $0035F2CC			// If stat reduced is Speed, branch to 0x35F2CC
LW V0, $0000 (A1)
ADDIU AT, R0, $0003
BEQL A2, AT, $0035F2E4			// If stat reduced is Special, branch to 0x35F2E4
LW V0, $0000 (A1)
BEQ R0, R0, $0035F2F0			// Else branch to 0x35F2F0
LW V1, $001C (SP)
LW V0, $0000 (A1)
Pointers
  • 0x35F2A0 - Pointers for Aurora Beam
SW T0, $002C (SP)
ADDIU T8, V0, $0038
SW T8, $0018 (SP)
BEQ R0, R0, $0035F2F0		// Branch to 0x35F2F0
ADDIU V1, V0, $002A
LW V0, $0000 (A1)
  • 0x35F2B8 - Pointers for Acid
ADDIU T9, V0, $003A
SW T9, $0018 (SP)
BEQ R0, R0, $0035F2F0		// Branch to 0x35F2F0
ADDIU V1, V0, $002C
LW V0, $0000 (A1)
  • 0x35F2CC - Pointers for Bubble and Bubblebeam
SW T0, $0028 (SP)
ADDIU T1, V0, $003C
SW T1, $0018 (SP)
BEQ R0, R0, $0035F2F0		// Branch to 0x35F2F0
ADDIU V1, V0, $002E
LW V0, $0000 (A1)
  • 0x35F2E4 - Pointers for Psychic
ADDIU T2, V0, $003E
SW T2, $0018 (SP)
ADDIU V1, V0, $0030
(0x35F2F0) LHU T3, $0000 (V1)
BEQ T0, T3, $0035F4C4		// If Target's stat == 1, skip this function
NOP
Adjust Target's stat
  • 0x35F2FC - Adjusts Target's stat to its stat Level
LW T4, $0000 (A1)
LW T9, $0018 (SP)
LUI T8, $8439
ADDU T5, T4, A2
LBU T6, $005C (T5)			// T6 = Target's stat Level
ADDIU T8, T8, $ACB8
LHU T1, $0000 (T9)			// T1 = Target's stat
SLL T7, T6, $1
ADDU V0, T7, T8
LBU T2, $FFFE (V0)			// Load stat numerator to T2
LBU T4, $FFFF (V0)			// Load stat denominator to T4
ADDIU T7, R0, $0001
MULTU T1, T2
MFLO T3					// T3 = Target's stat × stat numerator
NOP
NOP
DIV T3, T4
MFLO T5					// T5 = Target's stat × (stat numerator ÷ stat denominator)
ANDI T6, T5, $FFFF			// Stat can't be higher than 65535
BNEZ T4, $0035F354
NOP
BREAK					// No division by zero
(0x35F354) ADDIU AT, R0, $FFFF
BNE T4, AT, $0035F36C
LUI AT, $8000
BNE T3, AT, $0035F36C
NOP
BREAK					// No negative stat
(0x35F36C) SH T5, $0000 (V1)		// Store Adjusted stat in RAM
BNEL T6, R0, $0035F380			// If Adjusted stat ≠ 0, branch to 0x35F380
ADDIU AT, R0, $0002
SH T7, $0000 (V1)			// Else store 1 as the Adjusted stat
ADDIU AT, R0, $0002
(0x35F380) BNE A3, AT, $0035F3E4	// If Levels lowered ≠ 2, branch to 0x35F3E4
LUI T1, $8439
LUI T8, $8439
LW T8, $0240 (T8)
LUI A0, $8439
LHU V0, $002C (T8)
SW A2, $0024 (SP)
SLTIU V0, V0, $0001
SLL T9, V0, $2
ADDU A0, A0, T9
JAL $0430862C
LW A0, $0010 (A0)

? extra Effect

Effect chances #1
  • 0x35F818 - 77/256 chance
SLTI AT, V0, $004D	// Effect chance
BNEZ AT, $0035F870	// If 1-byte PRN < 0x4D, branch to 0x35F870
NOP
BEQ R0, R0, $0035F888	// Else branch to 0x35F888
LW RA, $0014 (SP)
Move Effect check (Flinch)
  • 0x35F834 - Checks if the Move Effect is 0x1F (Flinch)
ADDIU AT, R0, $001F	// Effect 0x1F - Flinch
LBU T2, $0045 (T1)	// Load Move Effect in T2
BNE T2, AT, $0035F860	// If Move Effect ≠ 0x1F, branch to 0x35F860
NOP
JAL $0436F6D8
NOP
Effect chances #2
  • 0x35F84C - 26/256 chance
SLTI AT, V0, $001A	// Effect chance
BNEZ AT, $0035F870	// If 1-byte PRN < 0x1A, branch to 0x35F870
NOP
BEQ R0, R0, $0035F888	// Else branch to 0x35F888
LW RA, $0014 (SP)
(0x35F860) JAL $0436F6D8
NOP
  • 0x35F868 - Yet again 77/256 chance
SLTI AT, V0, $004D
BEQ AT, R0, $0035F884	// If 1-byte PRN > 0x4D, branch to 0x35F884

? extra Effect

  • 0x35F870 - ? extra Effect
LUI V0, $843C
LW V0, $523C (V0)
LBU T3, $004C (V0)
ORI T4, T3, $0008	// T4 = T3 | 0x08
SB T4, $004C (V0)
(0x35F884) LW RA, $0014 (SP)
(0x35F888) ADDIU SP, SP, $0018
JR RA
NOP

Extra Effect general handler

  • 0x360FCC - Extra Effect general handler
To document

Battle Data arrays

Move IDs arrays

  • 0x370250 - List of Moves IDs (used for pointers ?)
0E 4A
0x0E - Swords Dance
0x4A - Growth
  • 0x370254 - List of Moves IDs (used for pointers ?)
60 69 75 78 85
0x60 - Meditate
0x69 - Recover
0x75 - Bide
0x78 - Selfdestruct
0x85 - Amnesia
  • 0x37025C - List of Moves IDs (used for pointers ?)
61 64 66 68 8C
0x61 - Agility
0x64 - Teleport
0x66 - Mimic
0x68 - Double Team
0x8C - Barrage
  • 0x370264 - List of Moves IDs (used for pointers ?)
01 0A 0B 11 13 14 15 1E 22 23 25 27 2B 2C 2D 2E
2F 40 44 46 47 51 59 5A 5B 5C 67 6A 6B 6E 6F 76
7A 80 84 8B 8D 91 94 96 97 9A 9C 9F A3 A4
0x01 - Pound
0x0A - Scratch
0x0B - Vicegrip
0x11 - Wing Attack
0x13 - Fly
0x14 - Bind
0x15 - Slam
0x1E - Horn Attack
0x22 - Body Slam
0x23 - Wrap
0x25 - Thrash
0x27 - Tail Whip
0x2B - Leer
0x2C - Bite
0x2D - Growl
0x2E - Roar
0x2F - Sing
0x40 - Peck
0x44 - Counter
0x46 - Strength
0x47 - Absorb
0x51 - String Shot
0x59 - Earthquake
0x5A - Fissure
0x5B - Dig
0x5C - Toxic
0x67 - Screech
0x6A - Harden
0x6B - Minimize
0x6E - Withdraw
0x6F - Defense Curl
0x76 - Metronome
0x7A - Lick
0x80 - Clamp
0x84 - Constrict
0x8B - Poison Gas
0x8D - Leech Life
0x91 - Bubble
0x94 - Flash
0x96 - Splash
0x97 - Acid Armor
0x9A - Fury Swipes
0x9C - Rest
0x9F - Sharpen
0xA3 - Slash
0xA4 - Substitute
  • 0x37552C - List of Moves IDs (copy of 0x370250)
0E 4A 00 00 60 69 75 78 85 00 00 00 61 64 66 68
8C 00 00 00 01 0A 0B 11 13 14 15 1E 22 23 25 27
2B 2C 2D 2E 2F 40 44 46 47 51 59 5A 5B 5C 67 6A
6B 6E 6F 76 7A 80 84 8B 8D 91 94 96 97 9A 9C 9F
A3 A4

Stats Modifiers arrays

  • 0x375578 - Attack, Defense, Special, Speed modifiers
19 64 - 025/100
1C 64 - 028/100
21 64 - 033/100
28 64 - 040/100
32 64 - 050/100
42 64 - 066/100
01 01 - 100/100
0F 0A - 150/100
02 01 - 200/100
19 0A - 250/100
03 01 - 300/100
23 0A - 350/100
04 01 - 400/100
  • 0x375594 - Accuracy and Evasion modifiers
01 03 -   1/3
24 64 - 036/100
2B 64 - 043/100
01 02 -   1/2
42 64 - 066/100
4B 64 - 075/100
01 01 -   1/1
85 64 - 133/100
A6 64 - 166/100
02 01 -   2/1
E9 64 - 233/100
85 32 - 266/100
03 01 -   3/1

Weaknesses and Resistances array

  • 0x3755B0 - List of Weaknesses and Resistances
15 14 14 14 16 14 14 19 14 16 15 14 17 15 14 15
05 14 04 02 00 15 15 05 14 14 05 17 17 05 19 19
05 16 16 05 18 18 05 14 15 05 16 14 05 15 16 05
17 16 05 00 05 05 00 08 00 08 08 14 14 07 14 14
05 05 15 04 14 17 04 00 17 02 14 16 04 14 16 07
05 16 03 05 16 05 14 16 02 05 19 15 05 19 16 14
19 04 14 19 02 14 01 00 14 01 03 05 01 02 05 01
18 05 01 07 05 01 05 14 01 19 14 01 08 00 03 16
14 03 03 05 03 04 05 03 07 14 03 05 05 03 08 05
04 14 14 04 17 14 04 16 05 04 07 05 04 05 14 04
03 14 02 17 05 02 01 14 02 07 14 02 16 14 02 05
05 18 01 14 18 03 14 07 14 05 07 16 14 07 01 05
07 02 05 07 18 14 07 08 05 07 03 14 05 14 14 05
01 05 05 04 05 05 02 14 05 07 14 05 19 14 08 00
00 08 18 00 14 1A 05 15 1A 05 17 1A 05 16 1A 05
19 1A 14 1A 1A 14
Water Fire 20 Fire Grass 20 Fire Ice 20 Grass Water 20 Electric Water 20 Water Rock 20 Ground Flying 00 Water Water 05 Fire Fire 05 Electric Electric 05 Ice Ice 05 Grass Grass 05 Psychic Psychic 05 Fire Water 05 Grass Fire 05 Water Grass 05 Electric Grass 05 Normal Rock 05 Normal Ghost 00 Ghost Ghost 20 Fire Bug 20 Fire Rock 05 Water Ground 20 Electric Ground 00 Electric Flying 20 Grass Ground 20 Grass Bug 05 Grass Poison 05 Grass Rock 20 Grass Flying 05 Ice Water 05 Ice Grass 20 Ice Ground 20 Ice Flying 20 Fighting Normal 20 Fighting Poison 05 Fighting Flying 05 Fighting Psychic 05 Fighting Bug 05 Fighting Rock 20 Fighting Ice 20 Fighting Ghost 00 Poison Grass 20 Poison Poison 05 Poison Ground 05 Poison Bug 20 Poison Rock 05 Poison Ghost 05 Ground Fire 20 Ground Electric 20 Ground Grass 05 Ground Bug 05 Ground Rock 20 Ground Poison 20 Flying Electric 05 Flying Fighting 20 Flying Bug 20 Flying Grass 20 Flying Rock 05 Psychic Fighting 20 Psychic Poison 20 Bug Fire 05 Bug Grass 20 Bug Fighting 05 Bug Flying 05 Bug Psychic 20 Bug Ghost 05 Bug Poison 20 Rock Fire 20 Rock Fighting 05 Rock Ground 05 Rock Flying 20 Rock Bug 20 Rock Ice 20 Ghost Normal 00 Ghost Psychic 00 Fire Dragon 05 Water Dragon 05 Electric Dragon 05 Grass Dragon 05 Ice Dragon 20 Dragon Dragon 20

Move Effects arrays

  • 0x3756AC - List of Moves Effects (used for ?)
18 19 1C 2E 2F 31 38 39 40 41 42 43 4F 52 54 55
1B 00 00 00 28 29 00 00 01 0A 0B 0C 0D 0E 0F 12
13 14 15 16 17 1A 20 32 33 34 35 36 37 3A 3B 3C
3D 3E 3F 00 03 07 08 10 1D 1E 2C 30 4D 51 00 00
03 07 08 10 11 1D 1E 27 28 29 2B 2C 2D 30

High Critical Rate Moves array

  • 0x37570C - List of High Critical Rate Moves
02 4B 98 A3
02 - Karate Chop
4B - Razor Leaf
98 - Crabhammer
A3 - Slash

TM HM array (legality checker)

  • 0x375874 - List of TM / HM moves (used by legality checker)
05 0D 0E 12 19 5C 20 22 24 26 3D 37 3A 3B 3F 06
42 44 45 63 48 4C 52 55 57 59 5A 5B 5E 64 66 68
73 75 76 78 79 7E 81 82 87 8A 8F 9C 56 95 99 9D
A1 A4 0F 13 39 46 94

Debug Text 2

  • 0x377C90
calc_vector_ATtoDM() normal error!!!
calc_vector_ATtoDM2() normal error!!!
  • 0x3781E0
PROB %d
POWER += POWER * %2.1f
CRITICAL %d
zokuseiFlag %d
******** CkeckCondition **********
MASK_SLEEP
BIT_FREEZE
BIT_SHIMETSUKE
BIT_KIZETSU
BIT_KATAMARU
count4 %d
BIT_KONRAN OWARI
BIT_KONRAN
BIT_KONRAN RND
NowSkill %d  kanashibariSkill %d
BIT_PARALYSE
BIT_GAMAN
CLEAR  BIT_GAMAN
BIT_ABARERU
BIT_SHIMETSUKE %d
BIT_IKARI
******** Kougeki1 Sart **********
JumpAttack2
JumpAttack3
SpAttackTbl1
JumpAttack4
SpAttackTbl3
JumpAttack5
JumpAttack5 Avoid
JumpAttack6
--->SHIMETUKE
effectPass
attack 9
Yubifuri
SpAttackTbl4
Avoid
MESSAGE
SpAttackTbl5
IkariCheck
RENZOKU Count %d
%d
SpAttackTbl
SP %d
index %d  step %d
index %d  step %d
index %d
paramStep %d index %d  step %d
%%%%%%%%%%%%%%%%%%%%%%%
INDEX %d   WARIKOMI %d
%%%%%%%%%%%%%%%%%%%%%%%
FAIL
index %d
index %d
FAIL
FAIL2
FAIL3
offp->count1 %d
******** spAttackMain ********
!!!! SPATTACK Num %d!!!!
******** spAttackMainEnd ********

Moves Legality arrays

  • 0x77FB20 - Red & Blue Level-Up and Event Moves
  • 0x780E00 - 0x7820E0 - Yellow Level-Up and Event Moves
xx xx xx xx xx xx xx xx xx xx yy yy yy yy yy yy
yy yy yy yy 00 00 00 00 00 00 00 00 00 00 00 00
xx - Levels
yy - Moves IDs

AI data

  • 0x7820E0 - AI data ; Italic is move randomness it seems from tests (not switches)
A3 C3 A3 CF A3 CD A4 C4
A4 E8 00 00 00 09 FF FF 7F 7F 00 B2 4D 00 80 80
80 80 80 00 00 00 00 00 01 4A FF FF 3F 7F 00 B2
4D 00 80 80 80 80 62 00 00 00 00 00 01 48 FF FF
00 7F 00 B2 4D 00 80 80 80 80 80 00 00 00 00 00
A3 C3 A3 CF A3 CD A4 D5
A4 C4 00 00 01 1E 12 C1 FF 7F 80 80 80 34 4E 80
80 80 00 80 00 00 00 00 01 1F 92 E0 B2 65 1A B2
73 19 80 1C 1C 1C 3F 34 00 00 00 00 01 1E B3 79
62 7F 33 B2 66 19 80 1C 1C 1C 3F 00 00 00 00 00
A3 C3 A3 CF A3 CD A4 E8
A4 EF 00 00 00 00 00 00 FF B2 00 B2 4D 00 80 80
80 80 80 00 00 00 00 00 00 00 00 00 FF B2 00 B2
4D 00 80 80 80 80 80 00 00 00 00 00 00 00 00 00
FF B2 00 B2 4D 00 80 80 80 80 80 00 00 00 00 00
A3 C3 A3 CF A3 CD A4 E8
A4 D3 00 00 03 4C FF FF FF 7F 00 B2 4D 00 80 80
80 80 62 00 00 00 00 00 01 4C FF FF 80 7F 00 B2
4D 00 80 80 80 80 62 00 00 00 00 00 03 5C FF FF
00 7F 00 B2 4D 00 80 80 80 80 62 00 00 00 00 00
A5 A4 A5 B1 A5 A4 A5 B1
00 00 00 00 01 08 FF FF FF 7F 00 B2 4D B2 FF 01
01 01 80 00 00 00 00 00 01 08 FF FF FF 7F 00 B2
4D B2 FF 01 01 01 80 00 00 00 00 00 01 08 FF FF
FF 7F 00 B2 4D B2 FF 01 01 01 80 00 00 00 00 00
A4 B7 A4 F3 A4 C1 A4 E7
A4 A6 00 00 01 08 FF FF 00 7F 00 B2 80 00 01 01
FF FF 80 00 00 00 00 00 01 08 FF FF 00 7F 00 B2
80 00 01 01 FF FF 80 00 00 00 00 00 01 08 FF FF
00 7F 00 B2 80 00 01 01 FF FF 80 00 00 00 00 00
A4 E8 A4 EF A4 E8 A4 EF
00 00 00 00 00 00 00 00 FF CC 80 6C 4D 4D 80 80
80 80 80 00 00 00 00 00 00 00 00 00 FF CC 80 6C
4D 4D 80 80 80 80 80 00 00 00 00 00 00 00 00 00
FF CC 80 6C 4D 4D 80 80 80 80 80 00 00 00 00 00
A4 B5 A4 A4 A4 AD A4 E7
A3 B5 00 00 01 0B FF FF 00 7F 00 B2 4D 00 80 80
80 80 80 00 00 00 00 00 01 0B FF FF 00 7F 00 B2
4D 00 80 80 80 80 80 00 00 00 00 00 01 0B FF FF
00 7F 00 B2 4D 00 80 80 80 80 80 00 00 00 00 00
A4 B5 A4 A4 A4 AD A4 E7
A3 B6 00 00 01 0B BF FF 00 7F 00 B2 4D 00 80 80
80 80 80 00 00 00 00 00 01 0B BF FF 00 7F 00 B2
4D 00 80 80 80 80 80 00 00 00 00 00 01 0B BF FF
00 7F 00 B2 4D 00 80 80 80 80 80 00 00 00 00 00
A4 B5 A4 A4 A4 AD A4 E7
A3 B7 00 00 01 0C FF FF 00 7F 00 B2 4D 00 80 80
80 80 80 00 00 00 00 00 01 0C FF FF 00 7F 00 B2
4D 00 80 80 80 80 80 00 00 00 00 00 01 0C FF FF
00 7F 00 B2 4D 00 80 80 80 80 80 00 00 00 00 00
A5 A8 A4 EA A1 BC A5 C8
A3 B1 00 00 00 07 9F F9 00 7F 60 C0 60 00 80 80
A0 A0 C0 80 00 00 00 00 00 07 9F F9 00 7F 20 C0
60 00 80 80 80 80 C0 00 00 00 00 00 00 07 9F F9
00 7F 00 C0 60 00 80 A0 50 80 C0 00 00 00 00 00
R1 Gym Leader Castle: JR(m)
A5 B9 A5 AD A5 F3 A3 B1
00 00 00 00 00 03 42 C0 FF 7F 00 A0 60 40 80 80
80 80 40 40 40 00 00 00 00 03 42 C0 FF 7F 00 A0
60 40 80 80 80 80 40 40 40 00 00 00 00 03 42 C0
FF 7F 00 A0 60 40 80 80 80 80 40 40 40 00 00 00

A4 AB A4 E9 A4 C6 A3 B1
00 00 00 00 00 2F 96 C0 FF 7F 00 C0 40 80 80 80
80 80 00 00 00 00 00 00 00 2F 96 C0 FF 7F 00 C0
40 80 80 80 80 80 00 00 00 00 00 00 00 2F 96 C0
FF 7F 00 C0 40 80 80 80 80 80 00 00 00 00 00 00
A4 B5 A4 A4 A4 AD A4 E7
A3 B8 00 00 01 8B 7F FF 00 7F 00 B2 4D 00 80 80
80 80 80 00 00 00 00 00 01 8B 7F FF 00 7F 00 B2
4D 00 80 80 80 80 80 00 00 00 00 00 01 8B 7F FF
00 7F 00 B2 4D 00 80 80 80 80 80 00 00 00 00 00
A4 B5 A4 A4 A4 AD A4 E7
A3 B9 00 00 01 0A 3F FF 00 7F 00 B2 4D 00 80 80
80 80 80 00 00 00 00 00 01 0A 3F FF 00 7F 00 B2
4D 00 80 80 80 80 80 00 00 00 00 00 01 0A 3F FF
00 7F 00 B2 4D 00 80 80 80 80 80 00 00 00 00 00
A5 A4 A5 B1 A5 A4 A5 B1
A3 B2 00 00 01 1B 37 FF FF 7F 00 B2 4D 4D FF 01
01 01 80 00 00 00 00 00 01 1B 37 FF FF 7F 00 B2
4D 4D FF 01 01 01 80 00 00 00 00 00 01 1B 37 FF
FF 7F 00 B2 4D 4D FF 01 01 01 80 00 00 00 00 00
A4 B7 A4 F3 A4 C1 A4 E7
A3 B2 00 00 01 0F FF FF 00 7F 00 B2 80 00 01 01
FF FF 80 80 80 00 00 00 01 0F FF FF 00 7F 00 B2
80 00 01 01 FF FF 80 80 80 00 00 00 01 0F FF FF
00 7F 00 B2 80 00 01 01 FF FF 80 80 80 00 00 00
A5 B3 A5 F3 A5 DC 00 00
00 00 00 00 01 0D FF BF 00 7F 00 B2 4D 00 80 80
80 80 B2 00 00 00 00 00 01 0D FF FF 00 7F 00 B2
4D 00 80 80 80 80 B2 00 00 00 00 00 01 0D FF F7
00 7F 00 B2 00 00 B2 4D 80 80 B2 00 00 00 00 00
A5 E9 A5 A4 A5 D0 A5 EB
00 00 00 00 01 CE FF FF 64 7F 00 B2 4D 00 80 80
80 80 80 00 00 00 00 00 01 CE FF FF 64 7F 00 B2
4D 00 80 80 80 80 80 00 00 00 00 00 01 CE FF FF
64 7F 00 B2 4D 00 80 80 80 80 80 00 00 00 00 00
A5 AE A5 E3 A5 F3 A5 D6
A3 B1 00 00 00 03 96 F8 40 7F 00 B2 4D 80 A0 10
FF 10 00 00 C0 00 00 00 00 03 96 F8 40 7F 00 B2
4D 80 A0 10 FF 10 00 00 C0 00 00 00 00 03 96 F8
40 7F 00 B2 4D 80 A0 10 FF 10 00 00 C0 00 00 00
A5 AE A5 E3 A5 F3 A5 D6 A5 E9 00 00 00 0F B6 FC
00 7F 00 B2 80 00 80 80 80 80 80 00 FF 00 00 00
00 0F B6 FC 00 7F 00 B2 80 00 80 80 80 80 80 00
FF 00 00 00 00 0F B6 FC 00 7F 00 B2 80 00 80 80
80 80 80 00 FF 00 00 00
A4 E2 A4 A6 A4 B8 A4 E5
A4 A6 00 00 01 1A AF FF C0 7F 00 B2 40 B2 94 80
94 80 00 00 80 00 00 00 01 1A AF FF C0 7F 00 B2
40 B2 9E 6C 80 6C 80 00 00 00 00 00 01 1A AF FF
C0 7F 00 B2 40 FF 94 80 94 80 00 00 80 00 00 00
A4 AD A4 C8 A4 A6 A4 B7 00 00 00 00 01 1F B7 FF
B2 7F 00 B2 4D B2 80 80 80 80 6C 00 B2 00 00 00
01 1F B7 FF B2 7F 00 B2 4D B2 80 80 B2 80 6C 00
80 00 00 00 01 1F B7 FF B2 7F 00 B2 4D B2 80 80
B2 B2 6C 00 80 00 00 00
A5 B5 A5 A4 A5 AD A5 C3
A5 AF 00 00 00 1A FF F9 B2 7F 80 B2 40 80 80 80
A0 A0 C0 00 80 00 00 00 00 1A FF F9 B2 7F 60 B2
40 80 80 80 90 90 C0 00 80 00 00 00 00 1A FF F9
B2 7F 00 B2 40 80 80 80 80 80 C0 00 80 00 00 00
A4 AB A4 A4 A4 B8 A4 E5 A4 A6 00 00 01 1F FF FF
00 7F 00 B2 4D 00 80 80 80 80 80 00 00 00 00 00
01 1F FF FF 00 7F 00 B2 4D 00 80 80 80 80 80 00
00 00 00 00 01 1F FF FF B2 7F 00 B2 4D 00 B2 4D
B2 4D 80 00 00 00 00 00
A4 CF A4 B0 A4 EC A3 B1
00 00 00 00 00 03 42 F8 A0 7F 00 B2 40 00 80 10
FF 10 00 00 00 00 00 00 00 03 42 F8 A0 7F 00 B2
40 00 80 10 C0 10 00 00 00 00 00 00 00 03 42 F8
A0 7F 00 B2 40 00 80 10 60 10 00 00 00 00 00 00
A4 C8 A4 EA A4 C4 A4 AB
A3 B1 00 00 00 0B 8E F8 40 7F 00 C0 50 00 80 80
90 90 00 90 00 00 00 00 00 0B 8E F8 40 7F 00 C0
50 00 80 80 90 90 00 90 00 00 00 00 00 0B 8E F8
40 7F 00 C0 50 00 80 80 90 90 00 90 00 00 00 00
A4 CF A4 B0 A4 EC A3 B2
00 00 00 00 00 03 86 38 00 7F 40 C0 60 00 80 80
80 80 00 00 00 00 00 00 00 03 86 38 00 7F 40 C0
60 00 60 80 60 80 00 00 00 00 00 00 00 03 86 38
00 7F 40 C0 60 00 50 A0 50 A0 00 00 00 00 00 00
A4 AD A4 C8 A4 A6 A4 B7
A3 B2 00 00 01 5F B7 FF B2 7F 00 B2 4D B2 6C 94
BE 41 C0 00 00 00 00 00 01 5F B7 FF B2 7F 00 B2
4D B2 6C 94 BE 41 C0 00 00 00 00 00 01 5F B7 FF
B2 7F 00 B2 4D B2 6C 94 BE 41 C0 00 00 00 00 00
A5 B3 A5 F3 A5 D3 A1 AA
A3 B1 00 00 01 4D AD FF A8 7F 00 B2 1E B2 80 80
A8 80 B2 00 00 00 00 00 01 4D AD FF A8 7F 00 B2
1E B2 80 80 A8 80 B2 00 00 00 00 00 01 4D AD FF
A8 7F 00 B2 1E B2 80 80 A8 80 B2 00 00 00 00 00
A4 DC A4 A6 A4 BD A4 A6
A3 B1 00 00 01 1F A5 FF 94 7F 00 26 94 00 80 40
80 80 80 00 00 00 00 00 01 1F A5 FF 94 7F 00 26
94 00 60 60 A8 80 80 00 00 00 00 00 01 1F A5 FF
94 7F 00 26 94 00 60 60 A8 80 80 00 00 00 00 00
A5 B5 A5 A4 A5 B3 A3 B2
00 00 00 00 01 3E AF FF 30 7F 00 B2 14 00 80 80
80 C6 A8 00 00 00 00 00 01 3E AF FF 30 7F 00 B2
14 00 80 80 80 C6 A8 00 00 00 00 00 01 3E AF FF
30 7F 00 B2 14 00 80 80 80 C6 A8 00 00 00 00 00
A5 AE A5 E3 A5 F3 A5 D6
A3 B2 00 00 00 4B B6 F8 40 7F 00 B2 4D 80 A0 10
FF 10 00 00 C0 00 00 00 00 4B B6 F8 40 7F 00 B2
4D 80 A0 10 FF 10 00 00 C0 00 00 00 00 4B B6 F8
40 7F 00 B2 4D 80 A0 10 FF 10 00 00 C0 00 00 00
A5 B8 A5 D7 A5 B7 A1 BC
00 00 00 00 01 0F EE FC 80 7F 00 94 60 00 40 40
94 94 00 00 B2 00 00 00 01 0F EE FC 80 7F 00 94
60 00 40 40 94 94 00 00 C6 00 00 00 01 0F EE FC
80 7F 00 94 60 00 60 60 94 94 00 00 C6 00 00 00
A4 CF A4 B0 A4 EC A3 B3
00 00 00 00 00 2B B6 F8 40 7F 00 B2 40 00 80 80
7E 80 00 00 00 00 00 00 00 2B B6 F8 40 7F 00 B2
40 00 80 80 7E 90 00 00 00 00 00 00 00 2B B6 F8
40 7F 00 B2 40 00 80 80 60 60 00 00 00 00 00 00
A5 C0 A5 D6 A5 EB A3 B1
00 00 00 00 01 1D EF FF B2 7F 00 B2 4E 00 80 80
80 BC A8 00 80 00 00 00 01 1D EF FF 80 7F 00 B2
4E 00 80 80 80 A8 A8 00 80 00 00 00 01 1D EF FF
3A 7F 00 B2 4E 00 80 80 80 80 A8 00 80 00 00 00
A4 CF A4 B0 A4 EC A3 B4
00 00 00 00 00 43 AE F8 00 7F 00 B2 60 00 80 80
A0 A0 C0 00 00 00 00 00 00 43 AE F8 00 7F 00 B2
60 00 80 80 A0 A0 C0 00 00 00 00 00 00 43 AE F8
00 7F 00 B2 60 00 80 80 A0 A0 C0 00 00 00 00 00
A4 AB A4 E9 A4 C6 A3 B2
00 00 00 00 00 23 86 F8 A0 7F 00 C0 4D 00 A0 A0
60 60 00 00 00 00 00 00 00 23 86 F8 A0 7F 00 C0
4D 00 A0 A0 60 60 00 00 00 00 00 00 00 23 86 F8
A0 7F 00 C0 4D 00 A0 A0 60 60 00 00 00 00 00 00
A5 A8 A4 EA A1 BC A5 C8
A3 B2 00 00 00 CF FF FB 00 7F 00 B2 60 00 80 80
A0 A0 C0 00 00 00 00 00 00 CF FF FB 00 7F 00 B2
60 00 80 80 80 80 C0 00 00 00 00 00 00 CF FF FB
00 7F 00 B2 60 00 A0 80 50 60 C0 00 00 00 00 00
A4 A6 A4 E9 A5 DE A5 B9
A3 B1 00 00 01 1E EF FF A8 7F 00 94 44 00 5E 5E
80 C6 00 00 00 00 00 00 01 0D FF FF 44 7F 00 94
44 00 5E 5E 80 94 B2 00 00 00 00 00 01 0D FF FF
44 7F 00 94 44 00 C6 5E 80 80 80 00 00 00 00 00
A4 A6 A4 E9 A5 DE A5 B9
A3 B2 00 00 01 0D FF FF 80 7F 00 A8 44 00 46 46
46 C6 B4 00 00 00 00 00 01 0D FF FF 1C 7F 00 A8
44 00 46 46 46 C6 80 00 00 00 00 00 01 0D FF FF
00 7F 00 A8 44 00 B9 46 46 80 00 00 00 00 00 00
A4 AD A4 C8 A4 A6 A4 B7
A3 B3 00 00 01 1E A7 FF 80 7F 00 20 44 00 30 30
C6 80 6C 00 80 00 00 00 01 1E A7 FF 1C 7F 00 20
44 00 30 30 C6 80 6C 00 80 00 00 00 01 1E A7 FF
00 7F 00 20 44 00 30 30 C6 80 6C 00 80 00 00 00
A5 AC A1 BC A5 EB 00 00
00 00 00 00 01 0B 15 FF AA 7F 00 B2 4D 00 96 01
AA 55 00 00 00 00 00 00 01 0B 15 FF 1E 7F 00 B2
4D 00 01 96 01 C0 00 00 00 00 00 00 01 0B 15 FF
1E 7F 00 B2 4D 00 01 96 01 C0 00 00 00 00 00 00
A5 A8 A5 D3 A5 B9 A4 DE
A4 EB 00 00 00 0B 43 F0 00 7F 55 A0 40 00 40 40
7D A0 80 00 00 00 00 00 00 0B 43 F0 00 7F 55 A0
40 00 40 40 7D A0 80 00 00 00 00 00 00 0B 43 F0
00 7F 55 A0 40 00 40 40 7D A0 80 00 00 00 00 00
A5 B7 A5 E7 A5 A6 A4 D8
A5 A4 00 00 01 0B 63 FC C0 7F 55 A0 40 14 BC 6C
80 4E 78 00 00 00 00 00 01 0B 63 FC C0 7F 55 A0
40 14 BC 6C 80 4E 78 00 00 00 00 00 01 0B 63 FC
C0 7F 55 A0 40 14 BC 6C 80 4E 78 00 00 00 00 00
A5 C8 A5 E2 A5 E6 A5 AD
00 00 00 00 01 0B 42 30 A0 7F 68 C0 60 00 80 80
80 80 00 00 00 00 00 00 01 0B 42 30 A0 7F 68 C0
60 00 80 80 80 80 00 00 00 00 00 00 01 0B 42 30
A0 7F 68 C0 60 00 80 80 80 80 00 00 00 00 00 00
A4 CE A4 EA A4 B7 A4 B2
00 00 00 00 00 07 75 F8 00 7F 55 B2 60 00 80 80
80 80 64 00 00 00 00 00 00 07 75 F8 00 7F 55 B2
60 00 80 80 80 80 64 00 00 00 00 00 00 07 75 F8
00 7F 55 B2 60 00 80 80 80 80 64 00 00 00 00 00
A5 B5 A5 C8 A5 B7 00 00
00 00 00 00 01 4B E1 FC 00 7F 55 80 80 00 80 80
80 80 00 00 00 00 00 00 01 4B E1 FC 00 7F 55 80
80 00 80 80 80 80 00 00 00 00 00 00 01 4B E1 FC
00 7F 55 80 80 00 80 80 80 80 00 00 00 00 00 00
A5 D6 A5 EB A1 BC 00 00
00 00 00 00 00 0B 40 F8 50 7F 60 80 90 00 6C 6C
94 94 96 00 00 00 00 00 00 0B 40 F8 50 7F 60 80
90 00 6C 6C 94 94 96 00 00 00 00 00 00 0B 40 F8
50 7F 60 80 90 00 6C 6C 94 94 96 00 00 00 00 00
A4 B7 A4 F3 A4 B8 00 00
00 00 00 00 00 0B 42 30 E6 7F 90 B2 33 00 BE 32
82 32 00 00 00 00 00 00 00 0B 42 30 E6 7F 90 B2
33 00 BE 32 82 32 00 00 00 00 00 00 00 0B 42 30
E6 7F 90 B2 33 00 BE 32 82 32 00 00 00 00 00 00
A5 DF A5 E5 A1 BC A5 C4
A1 BC 00 00 03 4C FF FF 80 7F 00 B2 66 00 80 80
94 94 00 00 00 00 00 00 03 4C FF FF 80 7F 00 B2
66 00 FF 80 94 94 00 00 00 00 00 00 03 4C FF FF
80 7F 00 B2 66 00 82 80 94 91 00 00 00 00 00 00
A4 C7 A4 F3 A4 AD 00 00
00 00 00 00 01 1A A7 FD 00 7F 00 B2 60 00 60 60
80 60 80 00 00 00 00 00 01 1A A7 FD 00 7F 00 B2
60 00 60 60 FF 60 80 00 00 00 00 00 01 1A A7 FD
00 7F 00 B2 60 00 60 60 80 60 80 00 00 00 00 00
A5 A8 A4 EA A1 BC A5 C8
A3 B3 00 00 01 8E FF FF B2 7F 00 A9 4E 00 1C 1C
94 80 A8 00 00 00 00 00 01 8E FF FF B2 7F 00 A9
4E 00 1C 1C 94 80 A8 00 00 00 00 00 01 8E FF FF
B2 7F 00 A9 4E 00 1C 1C 94 80 A8 00 00 00 00 00
A4 AD A4 C8 A4 A6 A4 B7
A3 B4 00 00 01 1E EF FF C6 7F 00 B2 44 00 01 01
80 80 FF 00 80 00 00 00 01 1E EF FF 1C 7F 00 B2
44 00 01 01 FF FF FF 00 80 00 00 00 01 1E EF FF
1C 7F 00 B2 44 00 80 01 37 37 FF 00 80 00 00 00
A4 C8 A4 EA A4 C4 A4 AB
A3 B2 00 00 01 8F B7 F8 40 7F 00 B2 50 1A 80 80
90 90 00 90 00 00 00 00 01 8F B7 F8 40 7F 00 B2
50 1A 80 80 90 90 00 90 00 00 00 00 01 8F B7 F8
40 7F 00 B2 50 1A 80 80 90 90 00 90 00 00 00 00
A4 C8 A4 EA A4 C4 A4 AB
A3 B3 00 00 00 8B 57 FB 00 7F 00 B2 50 00 80 80
90 90 00 90 00 00 00 00 00 8B 57 FB 00 7F 00 B2
50 00 80 80 90 90 00 90 00 00 00 00 00 8B 57 FB
00 7F 00 B2 50 00 80 80 90 90 00 90 00 00 00 00
A5 B9 A5 AD A5 F3 A3 B2
00 00 00 00 01 03 9A F8 C0 7F 20 C0 60 20 80 80
80 80 40 40 40 00 00 00 01 03 9A F8 C0 7F 20 C0
60 20 80 80 80 80 40 40 40 00 00 00 01 03 9A F8
C0 7F 20 C0 60 20 80 80 80 80 40 40 40 00 00 00
A5 A8 A4 EA A1 BC A5 C8
A3 B4 00 00 01 4B FF FB 00 7F 00 B2 60 00 80 80
A0 A0 C0 00 00 00 00 00 01 4B FF FB 00 7F 00 B2
60 00 80 80 90 90 C0 00 00 00 00 00 01 4B FF FB
00 7F 00 B2 60 00 A0 80 50 50 C0 00 00 00 00 00
A5 B8 A5 D7 A5 B7 A1 BC
A3 B2 00 00 01 3E AF FC FF 7F 00 B2 62 00 01 01
01 01 01 00 FF 00 00 00 01 3E AF FC 80 7F 00 B2
62 00 01 01 01 01 01 00 FF 00 00 00 01 3E AF FC
1C 7F 00 B2 62 00 C6 01 01 01 01 00 FF 00 00 00
A4 CF A4 B0 A4 EC A3 B5
00 00 00 00 01 03 82 F8 A0 7F 60 B2 40 00 80 10
FF 10 00 00 00 00 00 00 01 03 82 F8 A0 7F 60 B2
40 00 80 10 C0 10 00 00 00 00 00 00 01 03 82 F8
A0 7F 60 B2 40 00 80 10 60 10 00 00 00 00 00 00
A5 AC A1 BC A5 EB A3 B2
00 00 00 00 00 2B 17 BB 3C 7F 00 B2 4D 00 5A 96
5A 98 00 00 00 00 00 00 00 2B 17 BB 3C 7F 00 B2
4D 00 5A 96 5A 98 00 00 00 00 00 00 00 2B 17 BB
3C 7F 00 B2 4D 00 5A 96 5A 98 00 00 00 00 00 00
A5 B8 A5 A7 A5 F3 A5 C8
A5 EB 00 00 01 5E FF FB A8 7F 6C B2 59 6C A8 30
80 30 A8 00 00 00 00 00 01 5E FF FB A8 7F 6C B2
59 6C A8 30 C6 30 A8 00 00 00 00 00 01 5E FF FB
A8 7F 6C B2 59 6C A8 30 30 30 A8 00 00 00 00 00
A4 CF A4 B0 A4 EC A3 B6
00 00 00 00 00 0F FF F9 00 7F 00 C0 60 00 80 80
80 80 00 00 00 00 00 00 00 0F FF F9 00 7F 00 C0
60 00 80 90 80 90 00 00 00 00 00 00 00 0F FF F9
00 7F 00 C0 60 00 80 A0 50 A0 00 00 00 00 00 00
A4 B7 A4 F3 A4 B7 A3 B2
00 00 00 00 01 1E FF FF 80 7F 00 B2 62 00 80 80
80 80 C6 00 00 00 00 00 01 1E FF FF 80 7F 00 B2
62 00 80 80 80 80 C6 00 00 00 00 00 01 1E FF FF
80 7F 00 B2 62 00 80 80 80 80 C6 00 00 00 00 00
R1 Gym Leader Castle: Brock
A5 BF A5 B1 A5 B7 00 00
00 00 00 00 01 8F FD 7B 90 7F 00 B2 4D 00 80 80
80 80 B2 00 00 00 00 00 01 8F FF FB 90 7F 00 B2
4D 00 80 80 80 80 B2 00 00 00 00 00 01 8F FF FB
90 7F 00 B2 4D 00 B2 80 80 80 B2 00 00 00 00 00
A5 DE A5 C1 A5 B9 00 00
00 00 00 00 01 8B FF FB 00 7F 00 B2 4D 00 80 80
80 80 80 00 00 00 00 00 01 8B FF FB 00 7F 00 B2
4D 00 80 80 80 80 80 00 00 00 00 00 01 8B FF FB
00 7F 00 B2 4D 00 80 80 80 80 80 00 00 00 00 00
A5 AD A5 E7 A5 A6 00 00
00 00 00 00 01 8A 6F FB A0 7F 00 B2 4D 00 80 80
A0 90 40 00 00 00 00 00 01 8A 6F FB A0 7F 00 B2
4D 00 80 80 A0 90 40 00 00 00 00 00 01 8A 6F FB
A0 7F 00 B2 4D 00 80 80 A0 90 40 00 00 00 00 00
A5 CA A5 C4 A5 E1 00 00
00 00 00 00 01 8B B7 FB 80 7F 00 B2 4D 00 80 80
80 80 00 00 00 00 00 00 01 8B B7 FB 80 7F 00 B2
4D 00 80 80 80 80 00 00 00 00 00 00 01 8B B7 FB
80 7F 00 B2 4D 00 80 80 80 80 00 00 00 00 00 00
A5 B5 A5 AB A5 AD 00 00
00 00 00 00 01 8B FF FF 40 7F 00 B2 60 00 80 80
80 80 00 00 00 00 00 00 01 8B FF FF 40 7F 00 B2
60 00 80 80 80 80 00 00 00 00 00 00 01 8B FF FF
40 7F 00 B2 60 00 80 80 80 80 00 00 00 00 00 00
A4 AD A4 C8 A4 A6 A4 B7
A3 B5 00 00 01 0B 9E B8 40 7F 00 B2 4D 80 30 10
FF 10 80 80 80 00 00 00 01 0B 9E B8 40 7F 00 B2
4D 80 30 10 FF 10 80 80 80 00 00 00 01 0B 9E B8
40 7F 00 B2 4D 80 30 10 FF 10 80 80 80 00 00 00
A4 C7 A4 F3 A4 AD A3 B2
00 00 00 00 01 0B BF F9 A0 7F 00 A0 4D 00 60 60
C0 A0 80 00 00 00 00 00 01 0B BF F9 A0 7F 00 A0
4D 00 60 60 C0 A0 80 00 00 00 00 00 01 0B BF F9
A0 7F 00 A0 4D 00 60 60 C0 A0 80 00 00 00 00 00
A4 AA A4 CD A4 A8 00 00
00 00 00 00 01 6B 9F F9 C0 7F 00 B1 4D 00 80 80
B1 B1 00 00 00 00 00 00 01 6B 9F F9 C0 7F 00 B1
4D 00 80 80 B1 B1 00 00 00 00 00 00 01 6B 9F F9
C0 7F 00 B1 4D 00 80 80 B1 B1 00 00 00 00 00 00
A5 B5 A5 A4 A5 B3 A3 B3
00 00 00 00 01 4F F7 FB A0 7F 00 B1 4D 00 80 80
A0 A0 00 00 00 00 00 00 01 4F F7 FB A0 7F 00 B1
4D 00 80 80 A0 A0 00 00 00 00 00 00 01 4F F7 FB
A0 7F 00 B1 4D 00 80 80 A0 A0 00 00 00 00 00 00
A4 AD A4 C8 A4 A6 A4 B7
A3 B6 00 00 01 4B F7 FB 80 7F 00 B2 4D 00 30 10
FF 10 00 00 00 00 00 00 01 4B F7 FB 80 7F 00 B2
4D 00 30 10 FF 10 00 00 00 00 00 00 01 4B F7 FB
80 7F 00 B2 4D 00 30 10 FF 10 00 00 00 00 00 00

Game text

  • 0x783A88-0x783E40 : Prof. Oak's Laboratory
  • 0x783E7F-0x783FF7 : Pokémon PC
  • 0x784114-0x784420 : Pokémon Box #1
  • 0x78449C-0x7846A3 : Items Box
  • 0x784784-0x7849AD : Pokémon Box #2
  • 0x784B48-0x785055 : Pokémon List PC
  • 0x7850C0-0x785196 : Pokémon Moves screen
  • 0x7851CC-0x7852E2 : Pokémon PC Save screen
  • 0x78533C-0x7853A0 : Pokédex menu
  • 0x785580-0x785821 : Pokédex Areas
  • 0x785AA4-0x789D06 : Pokédex descriptions
  • 0x789FA8-0x78D84C : Moves descriptions
  • 0x78DC3C-0x78EB75 : Items descriptions
  • 0x78EBE7-0x78F4F4 : HMs/TMs descriptions
  • 0x78F510-0x78F66F : Transfer Pak errors
  • 0x78F7A0-0x78FD32 : Game menus
  • 0x79170C-0x791996 : Surfing Pikachu
  • 0x791B34-0x79245A : Mini-Games
  • 0x792710-0x793462 : Battle + Pokémon Gift
  • 0x7934C8-0x793660 : Hall of Fame
  • 0x7937B8-0x7949D6 : Cups Rules
  • 0x794A70-0x794CE7 : Pokémon Trade Service
  • 0x794DA0-0x794EC1 : Trainer Names
  • 0x794F80-0x7950A1 : Trainer Names
  • 0x795310-0x7957F3 : Pokémon Names
  • 0x795A98-0x7960A5 : Moves Names
  • 0x7960F4-0x79615B : Types Names
  • 0x79654C-0x796870 : Item Names
  • 0x7968E2-0x7969EE : HM TM Names
  • 0x796C50-0x7970EA : Species Names
  • 0x79710F-0x797138 : Status Names
  • 0x797184-0x797347 : Gallery #1
  • 0x797470-0x797E58 : Gallery #2
  • 0x798154-0x798CC6 : Credits
  • 0x799077-0x79907E : FRAGMENT (Unused)

Experience

Growth Rate groups

  • 0x7DE453-0x7DE464 - Experience formulas for each Growth Rate group.
%AAAABBBB %SCCCCCCC %DDDDDDDD %EEEEEEEE
(A×Level³)÷B + Sign(C×Level²) + (D×Level) - E
The last two groups are to be read xx 00 00 00
11 00 00 00		;1,000,000 Exp - Medium Fast
34 0A 00 1E		;  849,970 Exp - Unused 1
34 14 00 46		;  949,930 Exp - Unused 2
65 8F 64 8C		;1,059,860 Exp - Medium Slow
45			;  800,000 Exp - Fast
54			;1,250,000 Exp - Slow

Graphics 4

Pokémon miniatures

  • 0x82098F-0x89758E - Pokémon miniatures, 5×5 tiles each, 3200 bytes each (151 Pokémon + Substitute)

CPU and Rental Pokémon pointers

0x898000-0x8983EF - CPU and Rental Pokémon pointers

00 00 00 00 00 00 00 00 00 03 1E B0 00 00 00 3E	;Pointer array length : 0x3E			;Length: 0x31EB0
00 00 03 F0 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Petit Cup - Round 1			;Length:  0x1190
00 00 15 80 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Pika Cup - Round 1				;Length:  0x1190
00 00 27 10 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Prime Cup/Poké Ball - Round 1		;Length:  0x1190
00 00 38 A0 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Prime Cup/Great Ball - Round 1		;Length:  0x1190
00 00 4A 30 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Prime Cup/Ultra Ball - Round 1		;Length:  0x1190
00 00 5B C0 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Prime Cup/Master Ball - Round 1		;Length:  0x1190
00 00 6D 50 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Poké Cup/Poké Ball - Round 1		;Length:  0x1190
00 00 7E E0 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Poké Cup/Great Ball - Round 1		;Length:  0x1190
00 00 6D 50 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Poké Cup/Poké Ball - Round 1		;Length:  0x1190
00 00 7E E0 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Poké Cup/Great Ball - Round 1		;Length:  0x1190
00 00 90 70 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Poké Cup/Ultra Ball - Round 1		;Length:  0x1190
00 00 A2 00 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Poké Cup/Master Ball - Round 1		;Length:  0x1190
00 00 B3 90 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Gym #1 - Round 1		;Length:   0x8D0
00 00 BC 60 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Gym #2 - Round 1		;Length:   0x8D0
00 00 C5 30 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Gym #3 - Round 1		;Length:   0x8D0
00 00 CE 00 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Gym #4 - Round 1		;Length:   0x8D0
00 00 D6 D0 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Gym #5 - Round 1		;Length:   0x8D0
00 00 DF A0 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Gym #6 - Round 1		;Length:   0x8D0
00 00 E8 70 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Gym #7 - Round 1		;Length:   0x8D0
00 00 F1 40 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Gym #8 - Round 1		;Length:   0x8D0
00 00 FA 10 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Elite 4 - Round 1	;Length:   0x8D0
00 01 02 E0 00 00 0F 60 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Rival - Round 1		;Length:   0xF60
00 01 12 40 00 00 02 40 00 00 00 00 00 00 00 00	;cpu Mewtwo - Round 1				;Length:   0x240
00 01 14 80 00 00 0E D0 00 00 00 00 00 00 00 00	;rental Petit Cup				;Length:   0xED0
00 01 23 50 00 00 1D E0 00 00 00 00 00 00 00 00	;rental Pika Cup				;Length:  0x1DE0
00 01 41 30 00 00 30 F0 00 00 00 00 00 00 00 00	;rental Prime Cup / Mewtwo - Round 1		;Length:  0x30F0
00 01 72 20 00 00 30 F0 00 00 00 00 00 00 00 00	;rental Poké Cup				;Length:  0x30F0
00 01 72 20 00 00 30 F0 00 00 00 00 00 00 00 00	;rental Poké Cup				;Length:  0x30F0
00 01 72 20 00 00 30 F0 00 00 00 00 00 00 00 00	;rental Poké Cup				;Length:  0x30F0
00 01 A3 10 00 00 04 70 00 00 00 00 00 00 00 00	;cpu Battle Now - Round 1			;Length:   0x470
00 01 A7 80 00 00 30 F0 00 00 00 00 00 00 00 00	;rental Gym Leader Castle			;Length:  0x30F0
00 01 D8 70 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Petit Cup - Round 2			;Length:  0x1190
00 01 EA 00 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Pika Cup - Round 2				;Length:  0x1190
00 01 FB 90 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Prime Cup/Poké Ball - Round 2		;Length:  0x1190
00 02 0D 20 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Prime Cup/Great Ball - Round 2		;Length:  0x1190
00 02 1E B0 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Prime Cup/Ultra Ball - Round 2		;Length:  0x1190
00 02 30 40 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Prime Cup/Master Ball - Round 2		;Length:  0x1190
00 02 41 D0 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Poké Cup/Poké Ball - Round 2		;Length:  0x1190
00 02 53 60 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Poké Cup/Great Ball - Round 2		;Length:  0x1190
00 02 41 D0 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Poké Cup/Poké Ball - Round 2		;Length:  0x1190
00 02 53 60 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Poké Cup/Great Ball - Round 2		;Length:  0x1190
00 02 64 F0 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Poké Cup/Ultra Ball - Round 2		;Length:  0x1190
00 02 76 80 00 00 11 90 00 00 00 00 00 00 00 00	;cpu Poké Cup/Master Ball - Round 2		;Length:  0x1190
00 02 88 10 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Gym #1 - Round 2		;Length:   0x8D0
00 02 90 E0 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Gym #2 - Round 2		;Length:   0x8D0
00 02 99 B0 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Gym #3 - Round 2		;Length:   0x8D0
00 02 A2 80 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Gym #4 - Round 2		;Length:   0x8D0
00 02 AB 50 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Gym #5 - Round 2		;Length:   0x8D0
00 02 B4 20 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Gym #6 - Round 2		;Length:   0x8D0
00 02 BC F0 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Gym #7 - Round 2		;Length:   0x8D0
00 02 C5 C0 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Gym #8 - Round 2		;Length:   0x8D0
00 02 CE 90 00 00 08 D0 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Elite 4 - Round 2	;Length:   0x8D0
00 02 D7 60 00 00 0F 60 00 00 00 00 00 00 00 00	;cpu Gym Leader Castle Rival - Round 2		;Length:   0xF60
00 02 E6 C0 00 00 02 40 00 00 00 00 00 00 00 00	;cpu Mewtwo - Round 2				;Length:   0x240
00 01 14 80 00 00 0E D0 00 00 00 00 00 00 00 00	;rental Petit Cup				;Length:   0xED0
00 01 23 50 00 00 1D E0 00 00 00 00 00 00 00 00	;rental Pika Cup				;Length:  0x1DE0
00 02 E9 00 00 00 31 40 00 00 00 00 00 00 00 00	;rental Prime Cup / Mewtwo - Round 2		;Length:  0x3140
00 01 72 20 00 00 30 F0 00 00 00 00 00 00 00 00	;rental Poké Cup				;Length:  0x30F0
00 01 72 20 00 00 30 F0 00 00 00 00 00 00 00 00	;rental Poké Cup				;Length:  0x30F0
00 01 72 20 00 00 30 F0 00 00 00 00 00 00 00 00	;rental Poké Cup				;Length:  0x30F0
00 03 1A 40 00 00 04 70 00 00 00 00 00 00 00 00	;cpu Battle Now - Round 2			;Length:   0x470
00 01 A7 80 00 00 30 F0 00 00 00 00 00 00 00 00	;rental Gym Leader Castle			;Length:  0x30F0

CPU Pokémon

CPU Trainer data
00 00 00 aa bb bb bb bb bb bb bb 00 00 00 00 00
bb bb bb bb bb bb bb 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 cc dd 00 ee
aa - Number of CPU Trainers in Cup
bb - CPU Trainer name
cc - CPU Trainer sprite
dd - 
ee - Number of Pokémon
Pokémon data aa 00 bb bb cc dd ee ee 00 ff ff ff ff 00 gg gg 00 hh hh hh ii ii ii ii ii ii ii ii ii ii jj jj kk kk kk kk cc 00 mm mm mm mm mm mm mm mm mm mm qq qq qq qq qq qq qq qq qq qq qq rr rr rr rr rr rr rr rr aa - Pokédex ID bb - Current HP cc - Level dd - Status ee - Types ff - Moves gg - Trainer ID hh - Experience ii - Stat Experience jj - IVs kk - PPs mm - Stats qq - Nickname rr - Trainer
  • 0x8983F0 - Petit Cup - Round 1
  • 0x899580 - Pika Cup - Round 1
  • 0x89A710 - Prime Cup/Poké Ball - Round 1
  • 0x89B8A0 - Prime Cup/Great Ball - Round 1
  • 0x89CA30 - Prime Cup/Ultra Ball - Round 1
  • 0x89DBC0 - Prime Cup/Master Ball - Round 1
  • 0x89ED50 - Poké Cup/Poké Ball - Round 1
  • 0x89FEE0 - Poké Cup/Great Ball - Round 1
  • 0x8A1070 - Poké Cup/Ultra Ball - Round 1
  • 0x8A2200 - Poké Cup/Master Ball - Round 1
  • 0x8A3390 - Gym Leader Castle - Round 1
  • 0x8A9240 - Mewtwo - Round 1
  • 0x8B5870 - Petit Cup - Round 2
  • 0x8B6A00 - Pika Cup - Round 2
  • 0x8B7B90 - Prime Cup/Poké Ball - Round 2
  • 0x8B8D20 - Prime Cup/Great Ball - Round 2
  • 0x8B9EB0 - Prime Cup/Ultra Ball - Round 2
  • 0x8BB040 - Prime Cup/Master Ball - Round 2
  • 0x8BC1D0 - Poké Cup/Poké Ball - Round 2
  • 0x8BD360 - Poké Cup/Great Ball - Round 2
  • 0x8BE4F0 - Poké Cup/Ultra Ball - Round 2
  • 0x8BF680 - Poké Cup/Master Ball - Round 2
  • 0x8C0810 - Gym Leader Castle - Round 2
  • 0x8C66C0 - Mewtwo - Round 2

Rental Pokémon

Rental data
00 00 00 aa
aa - Number of rental Pokémon
Pokémon data aa 00 bb bb cc dd ee ee 00 ff ff ff ff 00 gg gg 00 hh hh hh ii ii ii ii ii ii ii ii ii ii jj jj kk kk kk kk cc 00 mm mm mm mm mm mm mm mm mm mm qq qq qq qq qq qq qq qq qq qq qq rr rr rr rr rr rr rr rr aa - Pokédex ID bb - Current HP cc - Level dd - Status ee - Types ff - Moves gg - Trainer ID hh - Experience ii - Stat Experience jj - IVs kk - PPs mm - Stats qq - Nickname rr - Trainer
  • 0x8A9480 - Petit Cup
  • 0x8AA350 - Pika Cup
  • 0x8AC130 - Prime Cup / Mewtwo - Round 1
  • 0x8AF220 - Poké Cup
  • 0x8B2780 - Gym Leader Castle
  • 0x8C6900 - Prime Cup / Mewtwo - Round 2

3D Models pointers

  • 0x920000 - 3D Models pointers
00 00 00 EF 00 00 00 00 00 C9 B7 B0 00 00 00 D7			;215 elements
00 00 0D 80 00 00 DE 90 00 00 00 00 00 00 00 00			;Bulbasaur
00 00 EC 10 00 02 11 40 00 00 00 00 00 00 00 00			;Ivysaur
00 02 FD 50 00 02 50 90 00 00 00 00 00 00 00 00			;Venusaur
00 05 4D E0 00 01 8D 40 00 00 00 00 00 00 00 00			;Charmander
00 06 DB 20 00 01 3F A0 00 00 00 00 00 00 00 00			;Charmeleon
00 08 1A C0 00 01 CD 60 00 00 00 00 00 00 00 00			;Charizard
00 09 E8 20 00 00 F5 30 00 00 00 00 00 00 00 00			;Squirtle
00 0A DD 50 00 01 B6 A0 00 00 00 00 00 00 00 00			;Wartortle
00 0C 93 F0 00 01 5A 60 00 00 00 00 00 00 00 00			;Blastoise
00 0D EE 50 00 00 6B 60 00 00 00 00 00 00 00 00			;Caterpie
00 0E 59 B0 00 00 53 30 00 00 00 00 00 00 00 00			;...
00 0E AC E0 00 00 C9 60 00 00 00 00 00 00 00 00
00 0F 76 40 00 00 8C 60 00 00 00 00 00 00 00 00
00 10 02 A0 00 00 3E 60 00 00 00 00 00 00 00 00
00 10 41 00 00 01 05 30 00 00 00 00 00 00 00 00
00 11 46 30 00 01 FD C0 00 00 00 00 00 00 00 00
00 13 43 F0 00 02 70 C0 00 00 00 00 00 00 00 00
00 15 B4 B0 00 02 65 50 00 00 00 00 00 00 00 00
00 18 1A 00 00 01 AF 50 00 00 00 00 00 00 00 00
00 19 C9 50 00 00 F4 50 00 00 00 00 00 00 00 00
00 1A BD A0 00 01 ED A0 00 00 00 00 00 00 00 00
00 1C AB 40 00 02 47 10 00 00 00 00 00 00 00 00
00 1E F2 50 00 01 17 20 00 00 00 00 00 00 00 00
00 20 09 70 00 00 E1 C0 00 00 00 00 00 00 00 00
00 20 EB 30 00 01 96 80 00 00 00 00 00 00 00 00
00 22 81 B0 00 02 53 60 00 00 00 00 00 00 00 00
00 24 D5 10 00 01 00 E0 00 00 00 00 00 00 00 00
00 25 D5 F0 00 02 44 B0 00 00 00 00 00 00 00 00
00 28 1A A0 00 00 DB F0 00 00 00 00 00 00 00 00
00 28 F6 90 00 00 FA 30 00 00 00 00 00 00 00 00
00 29 F0 C0 00 01 78 B0 00 00 00 00 00 00 00 00
00 2B 69 70 00 00 D5 90 00 00 00 00 00 00 00 00
00 2C 3F 00 00 00 F7 80 00 00 00 00 00 00 00 00
00 2D 36 80 00 01 60 10 00 00 00 00 00 00 00 00
00 2E 96 90 00 01 10 F0 00 00 00 00 00 00 00 00
00 2F A7 80 00 00 F5 80 00 00 00 00 00 00 00 00
00 30 9D 00 00 01 81 50 00 00 00 00 00 00 00 00
00 32 1E 50 00 01 EF C0 00 00 00 00 00 00 00 00
00 34 0E 10 00 00 AA 70 00 00 00 00 00 00 00 00
00 34 B8 80 00 00 EA 40 00 00 00 00 00 00 00 00
00 35 A2 C0 00 00 B3 00 00 00 00 00 00 00 00 00
00 36 55 C0 00 00 FC A0 00 00 00 00 00 00 00 00
00 37 52 60 00 01 4E 40 00 00 00 00 00 00 00 00
00 38 A0 A0 00 01 99 70 00 00 00 00 00 00 00 00
00 3A 3A 10 00 00 AE D0 00 00 00 00 00 00 00 00
00 3A E8 E0 00 00 96 50 00 00 00 00 00 00 00 00
00 3B 7F 30 00 00 8F 10 00 00 00 00 00 00 00 00
00 3C 0E 40 00 01 68 A0 00 00 00 00 00 00 00 00
00 3D 76 E0 00 00 9E B0 00 00 00 00 00 00 00 00
00 3E 15 90 00 00 59 80 00 00 00 00 00 00 00 00
00 3E 6F 10 00 00 99 00 00 00 00 00 00 00 00 00
00 3F 08 10 00 01 09 C0 00 00 00 00 00 00 00 00
00 40 11 D0 00 01 8C E0 00 00 00 00 00 00 00 00
00 41 9E B0 00 01 05 40 00 00 00 00 00 00 00 00
00 42 A3 F0 00 01 47 60 00 00 00 00 00 00 00 00
00 43 EB 50 00 01 6F 00 00 00 00 00 00 00 00 00
00 45 5A 50 00 01 41 A0 00 00 00 00 00 00 00 00
00 46 9B F0 00 00 FA C0 00 00 00 00 00 00 00 00
00 47 96 B0 00 02 37 E0 00 00 00 00 00 00 00 00
00 49 CE 90 00 00 F7 D0 00 00 00 00 00 00 00 00
00 4A C6 60 00 00 F3 A0 00 00 00 00 00 00 00 00
00 4B BA 00 00 01 44 70 00 00 00 00 00 00 00 00
00 4C FE 70 00 00 E2 A0 00 00 00 00 00 00 00 00
00 4D E1 10 00 01 A2 50 00 00 00 00 00 00 00 00
00 4F 83 60 00 01 67 30 00 00 00 00 00 00 00 00
00 50 EA 90 00 01 6A F0 00 00 00 00 00 00 00 00
00 52 55 80 00 01 28 20 00 00 00 00 00 00 00 00
00 53 7D A0 00 02 12 10 00 00 00 00 00 00 00 00
00 55 8F B0 00 01 50 20 00 00 00 00 00 00 00 00
00 56 DF D0 00 01 0B 50 00 00 00 00 00 00 00 00
00 57 EB 20 00 01 1A 60 00 00 00 00 00 00 00 00
00 59 05 80 00 00 C0 40 00 00 00 00 00 00 00 00
00 59 C5 C0 00 01 2D A0 00 00 00 00 00 00 00 00
00 5A F3 60 00 00 C4 E0 00 00 00 00 00 00 00 00
00 5B B8 40 00 01 3B 60 00 00 00 00 00 00 00 00
00 5C F3 A0 00 01 2B 70 00 00 00 00 00 00 00 00
00 5E 1F 10 00 01 DC 80 00 00 00 00 00 00 00 00
00 5F FB 90 00 01 E1 60 00 00 00 00 00 00 00 00
00 61 DC F0 00 00 B6 60 00 00 00 00 00 00 00 00
00 62 93 50 00 01 09 F0 00 00 00 00 00 00 00 00
00 63 9D 40 00 00 4C 40 00 00 00 00 00 00 00 00
00 63 E9 80 00 00 DF 20 00 00 00 00 00 00 00 00
00 64 C8 A0 00 01 B0 C0 00 00 00 00 00 00 00 00
00 66 79 60 00 01 52 20 00 00 00 00 00 00 00 00
00 67 CB 80 00 02 25 F0 00 00 00 00 00 00 00 00
00 69 F1 70 00 00 9B 30 00 00 00 00 00 00 00 00
00 6A 8C A0 00 00 CC D0 00 00 00 00 00 00 00 00
00 6B 59 70 00 01 64 00 00 00 00 00 00 00 00 00
00 6C BD 70 00 01 6F 60 00 00 00 00 00 00 00 00
00 6E 2C D0 00 00 70 C0 00 00 00 00 00 00 00 00
00 6E 9D 90 00 00 87 90 00 00 00 00 00 00 00 00
00 6F 25 20 00 00 6E 20 00 00 00 00 00 00 00 00
00 6F 93 40 00 01 0E 50 00 00 00 00 00 00 00 00
00 70 A1 90 00 00 C1 60 00 00 00 00 00 00 00 00
00 71 62 F0 00 00 F0 10 00 00 00 00 00 00 00 00
00 72 53 00 00 01 1F 50 00 00 00 00 00 00 00 00
00 73 72 50 00 01 F9 10 00 00 00 00 00 00 00 00
00 75 6B 60 00 00 C2 00 00 00 00 00 00 00 00 00
00 76 2D 60 00 01 06 D0 00 00 00 00 00 00 00 00
00 77 34 30 00 00 5C 60 00 00 00 00 00 00 00 00
00 77 90 90 00 00 94 A0 00 00 00 00 00 00 00 00
00 78 25 30 00 00 D1 20 00 00 00 00 00 00 00 00
00 78 F6 50 00 02 76 E0 00 00 00 00 00 00 00 00
00 7B 6D 30 00 01 08 A0 00 00 00 00 00 00 00 00
00 7C 75 D0 00 00 F0 60 00 00 00 00 00 00 00 00
00 7D 66 30 00 01 42 40 00 00 00 00 00 00 00 00
00 7E A8 70 00 00 D8 40 00 00 00 00 00 00 00 00
00 7F 80 B0 00 01 A1 00 00 00 00 00 00 00 00 00
00 81 21 B0 00 00 A4 10 00 00 00 00 00 00 00 00
00 81 C5 C0 00 00 EC 00 00 00 00 00 00 00 00 00
00 82 B1 C0 00 01 29 60 00 00 00 00 00 00 00 00
00 83 DB 20 00 01 2F 00 00 00 00 00 00 00 00 00
00 85 0A 20 00 01 79 70 00 00 00 00 00 00 00 00
00 86 83 90 00 02 39 70 00 00 00 00 00 00 00 00
00 88 BD 00 00 02 50 B0 00 00 00 00 00 00 00 00
00 8B 0D B0 00 00 86 20 00 00 00 00 00 00 00 00
00 8B 93 D0 00 00 8B F0 00 00 00 00 00 00 00 00
00 8C 1F C0 00 00 E0 10 00 00 00 00 00 00 00 00
00 8C FF D0 00 00 D2 F0 00 00 00 00 00 00 00 00
00 8D D2 C0 00 00 91 40 00 00 00 00 00 00 00 00
00 8E 64 00 00 01 3A 30 00 00 00 00 00 00 00 00
00 8F 9E 30 00 01 BF A0 00 00 00 00 00 00 00 00
00 91 5D D0 00 00 F7 20 00 00 00 00 00 00 00 00
00 92 54 F0 00 01 CF 20 00 00 00 00 00 00 00 00
00 94 24 10 00 01 89 70 00 00 00 00 00 00 00 00
00 95 AD 80 00 02 44 60 00 00 00 00 00 00 00 00
00 97 F1 E0 00 01 49 20 00 00 00 00 00 00 00 00
00 99 3B 00 00 02 52 C0 00 00 00 00 00 00 00 00
00 9B 8D C0 00 01 00 40 00 00 00 00 00 00 00 00
00 9C 8E 00 00 01 62 80 00 00 00 00 00 00 00 00
00 9D F0 80 00 01 69 60 00 00 00 00 00 00 00 00
00 9F 59 E0 00 00 EC D0 00 00 00 00 00 00 00 00
00 A0 46 B0 00 01 97 C0 00 00 00 00 00 00 00 00
00 A1 DE 70 00 01 9D 50 00 00 00 00 00 00 00 00
00 A3 7B C0 00 01 BA 80 00 00 00 00 00 00 00 00
00 A5 36 40 00 01 C3 80 00 00 00 00 00 00 00 00
00 A6 F9 C0 00 00 3E F0 00 00 00 00 00 00 00 00
00 A7 38 B0 00 00 86 30 00 00 00 00 00 00 00 00
00 A7 BE E0 00 00 EA 40 00 00 00 00 00 00 00 00
00 A8 A9 20 00 00 78 A0 00 00 00 00 00 00 00 00
00 A9 21 C0 00 00 E5 30 00 00 00 00 00 00 00 00			;...
00 AA 06 F0 00 01 A8 C0 00 00 00 00 00 00 00 00			;Articuno
00 AB AF B0 00 01 79 B0 00 00 00 00 00 00 00 00			;Zapdos
00 AD 29 60 00 01 BA D0 00 00 00 00 00 00 00 00			;Moltres
00 AE E4 30 00 01 22 E0 00 00 00 00 00 00 00 00			;Dratini
00 B0 07 10 00 01 EA B0 00 00 00 00 00 00 00 00			;Dragonair
00 B1 F1 C0 00 00 AA 70 00 00 00 00 00 00 00 00			;Dragonite
00 B2 9C 30 00 00 F1 C0 00 00 00 00 00 00 00 00			;Mewtwo
00 B3 8D F0 00 01 61 D0 00 00 00 00 00 00 00 00			;Mew
00 B4 EF C0 00 02 07 B0 00 00 00 00 00 00 00 00			;Substitute
00 B6 F7 70 00 01 5A 50 00 00 00 00 00 00 00 00			;Pikachu (Yellow)
00 B8 51 C0 00 00 51 80 00 00 00 00 00 00 00 00
00 B8 A3 40 00 01 EF 40 00 00 00 00 00 00 00 00
00 BA 92 80 00 00 1B 90 00 00 00 00 00 00 00 00
00 BA AE 10 00 00 32 30 00 00 00 00 00 00 00 00
00 BA E0 40 00 00 08 90 00 00 00 00 00 00 00 00
00 BA E8 D0 00 00 15 80 00 00 00 00 00 00 00 00
00 BA FE 50 00 00 33 40 00 00 00 00 00 00 00 00
00 BB 31 90 00 00 3E 60 00 00 00 00 00 00 00 00
00 BB 6F F0 00 00 A9 C0 00 00 00 00 00 00 00 00
00 BC 19 B0 00 00 74 10 00 00 00 00 00 00 00 00
00 BC 8D C0 00 00 12 A0 00 00 00 00 00 00 00 00
00 BC A0 60 00 00 0C F0 00 00 00 00 00 00 00 00
00 BC AD 50 00 00 28 50 00 00 00 00 00 00 00 00
00 BC D5 A0 00 00 36 F0 00 00 00 00 00 00 00 00
00 BD 0C 90 00 00 34 40 00 00 00 00 00 00 00 00
00 BD 40 D0 00 00 3A D0 00 00 00 00 00 00 00 00
00 BD 7B A0 00 00 4C 80 00 00 00 00 00 00 00 00
00 BD C8 20 00 00 4F 80 00 00 00 00 00 00 00 00
00 BE 17 A0 00 00 4C E0 00 00 00 00 00 00 00 00
00 BE 64 80 00 00 0C D0 00 00 00 00 00 00 00 00
00 BE 71 50 00 00 08 80 00 00 00 00 00 00 00 00
00 BE 79 D0 00 00 7D 80 00 00 00 00 00 00 00 00
00 BE F7 50 00 00 25 E0 00 00 00 00 00 00 00 00
00 BF 1D 30 00 00 80 50 00 00 00 00 00 00 00 00
00 BF 9D 80 00 00 04 F0 00 00 00 00 00 00 00 00
00 BF A2 70 00 00 73 70 00 00 00 00 00 00 00 00
00 C0 15 E0 00 00 73 20 00 00 00 00 00 00 00 00
00 C0 89 00 00 00 22 E0 00 00 00 00 00 00 00 00
00 C0 AB E0 00 00 0A A0 00 00 00 00 00 00 00 00
00 C0 B6 80 00 00 07 20 00 00 00 00 00 00 00 00
00 C0 BD A0 00 00 2F D0 00 00 00 00 00 00 00 00
00 C0 ED 70 00 00 0E C0 00 00 00 00 00 00 00 00
00 C0 FC 30 00 02 62 A0 00 00 00 00 00 00 00 00
00 C3 5E D0 00 00 08 80 00 00 00 00 00 00 00 00
00 C3 67 50 00 00 08 80 00 00 00 00 00 00 00 00
00 C3 6F D0 00 00 08 80 00 00 00 00 00 00 00 00
00 C3 78 50 00 00 08 80 00 00 00 00 00 00 00 00
00 C3 80 D0 00 00 08 80 00 00 00 00 00 00 00 00
00 C3 89 50 00 00 08 80 00 00 00 00 00 00 00 00
00 C3 91 D0 00 00 08 80 00 00 00 00 00 00 00 00
00 C3 9A 50 00 00 08 80 00 00 00 00 00 00 00 00
00 C3 A2 D0 00 00 08 80 00 00 00 00 00 00 00 00
00 C3 AB 50 00 00 08 80 00 00 00 00 00 00 00 00
00 C3 B3 D0 00 00 1F 80 00 00 00 00 00 00 00 00
00 C3 D3 50 00 00 EC 20 00 00 00 00 00 00 00 00
00 C4 BF 70 00 00 8B 80 00 00 00 00 00 00 00 00
00 C5 4A F0 00 00 3B E0 00 00 00 00 00 00 00 00
00 C5 86 D0 00 00 1B 70 00 00 00 00 00 00 00 00
00 C5 A2 40 00 00 13 C0 00 00 00 00 00 00 00 00
00 C5 B6 00 00 00 48 80 00 00 00 00 00 00 00 00
00 C5 FE 80 00 00 09 A0 00 00 00 00 00 00 00 00
00 C6 08 20 00 00 0A 20 00 00 00 00 00 00 00 00
00 C6 12 40 00 00 0A 30 00 00 00 00 00 00 00 00
00 C6 1C 70 00 00 09 A0 00 00 00 00 00 00 00 00
00 C6 26 10 00 00 2B A0 00 00 00 00 00 00 00 00
00 C6 51 B0 00 00 2B E0 00 00 00 00 00 00 00 00
00 C6 7D 90 00 00 2B E0 00 00 00 00 00 00 00 00
00 C6 A9 70 00 00 2C 10 00 00 00 00 00 00 00 00
00 C6 D5 80 00 00 04 60 00 00 00 00 00 00 00 00
00 C6 D9 E0 00 00 54 E0 00 00 00 00 00 00 00 00
00 C7 2E C0 00 00 41 80 00 00 00 00 00 00 00 00
00 C7 70 40 00 00 42 50 00 00 00 00 00 00 00 00
00 C7 B2 90 00 00 89 B0 00 00 00 00 00 00 00 00
00 C8 3C 40 00 01 7B 70 00 00 00 00 00 00 00 00

3D Models

  • 0x920D80 - 0x14C927F (0x120298F ?) - Pokémon Models
  • 0x14C9280 - 0x15A4000 - Mini-games / Trophies / Stages Models