more headway on Pokemon funcs and labeled in asm

This commit is contained in:
Seth Barberee 2021-01-21 23:00:49 -06:00
parent 10cda4ba81
commit cb77386b65
22 changed files with 282 additions and 383 deletions

View File

@ -7108,7 +7108,7 @@ sub_801059C:
movs r3, 0x8
ldrsh r0, [r7, r3]
movs r1, 0
bl sub_808DD68
bl GetPokemonOverworldPalette
ldr r1, [r4]
ldr r3, _08010710
adds r2, r1, r3
@ -8073,7 +8073,7 @@ sub_8010DA4:
movs r2, 0x8
ldrsh r0, [r1, r2]
movs r1, 0
bl sub_808DD68
bl GetPokemonOverworldPalette
ldr r2, [r4]
ldr r3, _08010ED8
adds r1, r2, r3

View File

@ -7233,7 +7233,7 @@ _08016348:
str r0, [r1]
_08016352:
movs r0, 0x35
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
ldr r2, _0801639C
ldr r3, [r2]
adds r1, r3, 0
@ -8453,7 +8453,7 @@ _08016CFC:
str r0, [r1]
_08016D06:
movs r0, 0x73
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
ldr r2, _08016D50
ldr r3, [r2]
adds r1, r3, 0
@ -12274,7 +12274,7 @@ _08018B80:
_08018BAE:
movs r0, 0xBE
lsls r0, 1
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
ldr r2, _08018C00
ldr r3, [r2]
adds r1, r3, 0

View File

@ -2009,7 +2009,7 @@ _0801E850:
_0801E858:
str r0, [r1]
ldr r0, _0801E8B4
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
ldr r2, _0801E8B8
ldr r3, [r2]
movs r4, 0x8C
@ -4499,7 +4499,7 @@ _0801FBD0:
str r0, [r1]
_0801FBDE:
ldr r0, _0801FC34
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
ldr r2, _0801FC38
ldr r3, [r2]
movs r4, 0xB6
@ -8517,7 +8517,7 @@ _08021C04:
str r0, [r1]
_08021C0E:
movs r0, 0x28
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
ldr r2, _08021C58
ldr r3, [r2]
adds r1, r3, 0
@ -13920,7 +13920,7 @@ sub_802465C:
ldr r0, [r5]
strb r4, [r0]
ldr r0, _080246EC
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
ldr r2, [r5]
movs r3, 0x82
lsls r3, 1

View File

@ -431,7 +431,7 @@ sub_8027F88:
ldr r0, _08028064
bl strcpy
adds r0, r4, 0
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
ldr r2, [r5]
movs r3, 0x84
lsls r3, 3

View File

@ -570,13 +570,13 @@ _080527DE:
movs r1, 0
ldrsh r0, [r4, r1]
ldrb r1, [r4, 0x2]
bl sub_808DE10
bl IsPokemonDialogueSpriteAvail
lsls r0, 24
cmp r0, 0
beq _08052844
movs r2, 0
ldrsh r0, [r4, r2]
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
str r0, [sp, 0x14]
ldr r0, [r0, 0x4]
str r0, [sp, 0x18]
@ -903,7 +903,7 @@ _08052A9E:
adds r5, r0, 0
mov r9, sp
adds r0, r4, 0
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
str r0, [sp]
cmp r0, 0
beq _08052B10
@ -1023,13 +1023,13 @@ sub_8052B8C:
movs r1, 0
ldrsh r0, [r4, r1]
ldrb r1, [r4, 0x2]
bl sub_808DE10
bl IsPokemonDialogueSpriteAvail
lsls r0, 24
cmp r0, 0
beq _08052C02
movs r2, 0
ldrsh r0, [r4, r2]
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
str r0, [sp]
ldr r0, [r0, 0x4]
str r0, [sp, 0x4]
@ -1134,13 +1134,13 @@ sub_8052C68:
movs r1, 0
ldrsh r0, [r4, r1]
ldrb r1, [r4, 0x2]
bl sub_808DE10
bl IsPokemonDialogueSpriteAvail
lsls r0, 24
cmp r0, 0
beq _08052CE6
movs r2, 0
ldrsh r0, [r4, r2]
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
str r0, [sp, 0x14]
ldr r0, [r0, 0x4]
str r0, [sp, 0x18]
@ -39953,7 +39953,7 @@ _080665D0:
b _08066704
_080665DE:
adds r0, r6, 0
bl sub_808DCC0
bl GetBaseRecruit
lsls r0, 16
ldr r1, _0806661C
cmp r0, r1
@ -47072,7 +47072,7 @@ _08069E4E:
movs r1, 0x2
ldrsh r0, [r5, r1]
adds r1, r4, 0
bl sub_808DC68
bl GetPokemonType
adds r1, r7, r4
strb r0, [r1]
adds r4, 0x1
@ -47084,7 +47084,7 @@ _08069E64:
movs r1, 0x2
ldrsh r0, [r5, r1]
adds r1, r4, 0
bl sub_808DC84
bl GetPokemonAbility
adds r1, r6, r4
strb r0, [r1]
adds r4, 0x1
@ -49179,7 +49179,7 @@ _0806AE42:
bl sub_808E9E4
adds r1, r0, 0
adds r0, r4, 0
bl sub_808DD18
bl CalculateEXPGain
cmp r9, r0
bge _0806AE72
mov r9, r0
@ -51574,7 +51574,7 @@ _0806C0E0:
adds r1, r5, 0
str r2, [sp, 0x30]
str r3, [sp, 0x34]
bl sub_808DC84
bl GetPokemonAbility
ldr r7, [sp, 0x8]
adds r1, r7, r5
strb r0, [r1]
@ -51646,7 +51646,7 @@ _0806C172:
movs r7, 0x2
ldrsh r0, [r4, r7]
adds r1, r5, 0
bl sub_808DC68
bl GetPokemonType
mov r2, r10
adds r1, r2, r5
strb r0, [r1]
@ -52072,7 +52072,7 @@ sub_806C488:
asrs r6, r0, 16
adds r0, r6, 0
mov r1, r8
bl sub_808DC28
bl GetPokemonAttSpatt
adds r5, r0, 0
movs r4, 0x2
cmp r4, r7
@ -52113,7 +52113,7 @@ sub_806C4D4:
asrs r6, r0, 16
adds r0, r6, 0
mov r1, r8
bl sub_808DC48
bl GetPokemonDefSpdef
adds r5, r0, 0
movs r4, 0x2
cmp r4, r7
@ -52886,7 +52886,7 @@ _0806CACC:
ldrsh r0, [r3, r4]
_0806CAD2:
movs r1, 0
bl sub_808DD68
bl GetPokemonOverworldPalette
lsls r0, 24
lsrs r2, r0, 24
adds r0, r6, 0
@ -55533,7 +55533,7 @@ _0806DF7E:
movs r1, 0x2
ldrsh r0, [r6, r1]
ldrb r1, [r6, 0x9]
bl sub_808DD18
bl CalculateEXPGain
adds r5, r0, 0
adds r0, r6, 0
adds r0, 0xFB
@ -58603,7 +58603,7 @@ _0806F7DE:
adds r7, r0, 0
movs r1, 0x2
ldrsh r0, [r4, r1]
bl sub_808DCC0
bl GetBaseRecruit
lsls r0, 16
asrs r4, r0, 16
ldr r0, _0806F844
@ -89292,12 +89292,12 @@ _0807E958:
movs r1, 0x2
ldrsh r0, [r4, r1]
movs r1, 0
bl sub_808DC68
bl GetPokemonType
strb r0, [r6]
movs r1, 0x2
ldrsh r0, [r4, r1]
movs r1, 0x1
bl sub_808DC68
bl GetPokemonType
strb r0, [r7]
_0807E984:
mov r0, sp

View File

@ -772,7 +772,7 @@ _0808E3E0:
cmp r0, 0
beq _0808E3F8
adds r0, r2, 0
bl sub_808DC0C
bl GetPokemonEvolveFrom
lsls r0, 16
asrs r2, r0, 16
cmp r2, 0
@ -810,7 +810,7 @@ _0808E426:
asrs r5, r0, 16
mov r8, r5
adds r0, r5, 0
bl sub_808DC0C
bl GetPokemonEvolveFrom
lsls r0, 16
asrs r0, 16
cmp r9, r0

View File

@ -2478,7 +2478,7 @@ _0808FF50:
movs r7, 0x8
ldrsh r0, [r6, r7]
adds r1, r4, 0
bl sub_808DC68
bl GetPokemonType
adds r1, r5, 0
adds r1, 0x16
adds r1, r4
@ -2486,7 +2486,7 @@ _0808FF50:
movs r1, 0x8
ldrsh r0, [r6, r1]
adds r1, r4, 0
bl sub_808DC84
bl GetPokemonAbility
adds r1, r5, 0
adds r1, 0x18
adds r1, r4

View File

@ -614,14 +614,14 @@ _08090602:
beq _0809063A
adds r0, r2, 0
movs r1, 0
bl sub_808DC68
bl GetPokemonType
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
beq _08090638
ldr r0, [sp, 0xE0]
movs r1, 0x1
bl sub_808DC68
bl GetPokemonType
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
@ -653,7 +653,7 @@ _08090644:
movs r1, 0x8
ldrsh r0, [r4, r1]
movs r1, 0
bl sub_808DC68
bl GetPokemonType
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
@ -661,7 +661,7 @@ _08090644:
movs r2, 0x8
ldrsh r0, [r4, r2]
movs r1, 0x1
bl sub_808DC68
bl GetPokemonType
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
@ -2837,14 +2837,14 @@ _0809161E:
movs r1, 0x8
ldrsh r0, [r6, r1]
movs r1, 0
bl sub_808DC68
bl GetPokemonType
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
movs r2, 0x8
ldrsh r0, [r6, r2]
movs r1, 0x1
bl sub_808DC68
bl GetPokemonType
lsls r0, 24
lsrs r0, 24
adds r2, r5, 0

View File

@ -30,7 +30,7 @@ _08097F86:
bx r0
.align 2, 0
_08097FA0: .4byte gUnknown_203B498
_08097FA4: .4byte gUnknown_810AD0C
_08097FA4: .4byte gExclusivePokemon
thumb_func_end sub_8097F74
thumb_func_start sub_8097FA8
@ -386,7 +386,7 @@ _080981E8:
b _0809820E
.align 2, 0
_080981FC: .4byte gUnknown_203B498
_08098200: .4byte gUnknown_810AD0C
_08098200: .4byte gExclusivePokemon
_08098204:
adds r2, 0x4
adds r1, 0x1
@ -427,7 +427,7 @@ _08098232:
bx r0
.align 2, 0
_08098240: .4byte gUnknown_203B498
_08098244: .4byte gUnknown_810AD0C
_08098244: .4byte gExclusivePokemon
thumb_func_end sub_8098214
thumb_func_start sub_8098248

View File

@ -3793,7 +3793,7 @@ _0809AD1C:
beq _0809ADC0
movs r1, 0x2
ldrsh r0, [r4, r1]
bl sub_808DD90
bl OpenPokemonDialogueSpriteFile
str r0, [r4, 0x20]
cmp r0, 0
beq _0809ADB6

View File

@ -10098,7 +10098,7 @@ _080A7490:
movs r1, 0x1
_080A7498:
adds r0, r4, 0
bl sub_808DD68
bl GetPokemonOverworldPalette
lsls r0, 24
lsrs r0, 8
ldr r2, _080A74E0

View File

@ -1463,7 +1463,7 @@ sub_803CC80:
movs r0, 0x1
bl sub_80073B8
adds r0, r4, 0
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
adds r5, r0, 0
ldr r0, [r5, 0x4]
ldr r6, [r0, 0xC]
@ -1859,7 +1859,7 @@ sub_803CFC0:
movs r0, 0x1
bl sub_80073B8
adds r0, r4, 0
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
adds r5, r0, 0
ldr r0, [r5, 0x4]
ldr r6, [r0, 0x4]
@ -1909,14 +1909,14 @@ sub_803D030:
movs r1, 0
ldrsh r0, [r0, r1]
movs r1, 0
bl sub_808DC68
bl GetPokemonType
mov r1, sp
strb r0, [r1]
ldr r0, [r4]
movs r2, 0
ldrsh r0, [r0, r2]
movs r1, 0x1
bl sub_808DC68
bl GetPokemonType
mov r1, sp
strb r0, [r1, 0x1]
movs r7, 0
@ -1930,11 +1930,11 @@ _0803D064:
ldrsh r4, [r1, r0]
adds r0, r4, 0
movs r1, 0
bl sub_808DC68
bl GetPokemonType
strb r0, [r6]
adds r0, r4, 0
movs r1, 0x1
bl sub_808DC68
bl GetPokemonType
adds r2, r0, 0
strb r2, [r6, 0x1]
ldrb r1, [r6]

View File

@ -102,22 +102,22 @@ _0808CEA4:
strh r0, [r1, 0x16]
adds r0, r7, 0
movs r1, 0
bl sub_808DC28
bl GetPokemonAttSpatt
mov r1, sp
strb r0, [r1, 0x18]
adds r0, r7, 0
movs r1, 0x1
bl sub_808DC28
bl GetPokemonAttSpatt
mov r1, sp
strb r0, [r1, 0x19]
adds r0, r7, 0
movs r1, 0
bl sub_808DC48
bl GetPokemonDefSpdef
mov r1, sp
strb r0, [r1, 0x1A]
adds r0, r7, 0
movs r1, 0x1
bl sub_808DC48
bl GetPokemonDefSpdef
mov r1, sp
strb r0, [r1, 0x1B]
mov r0, sp
@ -264,19 +264,19 @@ sub_808CFD0:
strh r0, [r7, 0x16]
mov r0, r9
movs r1, 0
bl sub_808DC28
bl GetPokemonAttSpatt
strb r0, [r7, 0x18]
mov r0, r9
movs r1, 0x1
bl sub_808DC28
bl GetPokemonAttSpatt
strb r0, [r7, 0x19]
mov r0, r9
movs r1, 0
bl sub_808DC48
bl GetPokemonDefSpdef
strb r0, [r7, 0x1A]
mov r0, r9
movs r1, 0x1
bl sub_808DC48
bl GetPokemonDefSpdef
strb r0, [r7, 0x1B]
mov r1, r9
strh r1, [r7, 0x8]
@ -383,22 +383,22 @@ sub_808D0D8:
movs r2, 0x8
ldrsh r0, [r7, r2]
movs r1, 0
bl sub_808DC28
bl GetPokemonAttSpatt
strb r0, [r7, 0x18]
movs r1, 0x8
ldrsh r0, [r7, r1]
movs r1, 0x1
bl sub_808DC28
bl GetPokemonAttSpatt
strb r0, [r7, 0x19]
movs r2, 0x8
ldrsh r0, [r7, r2]
movs r1, 0
bl sub_808DC48
bl GetPokemonDefSpdef
strb r0, [r7, 0x1A]
movs r1, 0x8
ldrsh r0, [r7, r1]
movs r1, 0x1
bl sub_808DC48
bl GetPokemonDefSpdef
strb r0, [r7, 0x1B]
str r6, [r7, 0x1C]
adds r0, r7, 0

View File

@ -1,184 +0,0 @@
.include "constants/gba_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_808DC28
sub_808DC28:
lsls r0, 16
asrs r0, 16
ldr r2, _0808DC44
ldr r3, [r2]
lsls r2, r0, 3
adds r2, r0
lsls r2, 3
adds r2, r3
lsls r1, 1
adds r2, 0x24
adds r2, r1
ldrh r0, [r2]
bx lr
.align 2, 0
_0808DC44: .4byte gMonsterParameters
thumb_func_end sub_808DC28
thumb_func_start sub_808DC48
sub_808DC48:
lsls r0, 16
asrs r0, 16
ldr r2, _0808DC64
ldr r3, [r2]
lsls r2, r0, 3
adds r2, r0
lsls r2, 3
adds r2, r3
lsls r1, 1
adds r2, 0x28
adds r2, r1
ldrh r0, [r2]
bx lr
.align 2, 0
_0808DC64: .4byte gMonsterParameters
thumb_func_end sub_808DC48
thumb_func_start sub_808DC68
sub_808DC68:
lsls r0, 16
asrs r0, 16
ldr r2, _0808DC80
ldr r3, [r2]
lsls r2, r0, 3
adds r2, r0
lsls r2, 3
adds r2, r3
adds r2, 0x13
adds r2, r1
ldrb r0, [r2]
bx lr
.align 2, 0
_0808DC80: .4byte gMonsterParameters
thumb_func_end sub_808DC68
thumb_func_start sub_808DC84
sub_808DC84:
lsls r0, 16
asrs r0, 16
ldr r2, _0808DC9C
ldr r3, [r2]
lsls r2, r0, 3
adds r2, r0
lsls r2, 3
adds r2, r3
adds r2, 0x17
adds r2, r1
ldrb r0, [r2]
bx lr
.align 2, 0
_0808DC9C: .4byte gMonsterParameters
thumb_func_end sub_808DC84
thumb_func_start sub_808DCA0
sub_808DCA0:
lsls r0, 16
asrs r0, 16
ldr r2, _0808DCBC
ldr r3, [r2]
lsls r2, r0, 3
adds r2, r0
lsls r2, 3
adds r2, r3
lsls r1, 1
adds r2, 0x3C
adds r2, r1
movs r1, 0
ldrsh r0, [r2, r1]
bx lr
.align 2, 0
_0808DCBC: .4byte gMonsterParameters
thumb_func_end sub_808DCA0
thumb_func_start sub_808DCC0
sub_808DCC0:
lsls r0, 16
asrs r0, 16
ldr r1, _0808DCD8
ldr r2, [r1]
lsls r1, r0, 3
adds r1, r0
lsls r1, 3
adds r1, r2
adds r1, 0x40
movs r2, 0
ldrsh r0, [r1, r2]
bx lr
.align 2, 0
_0808DCD8: .4byte gMonsterParameters
thumb_func_end sub_808DCC0
thumb_func_start sub_808DCDC
sub_808DCDC:
lsls r0, 16
asrs r0, 16
ldr r2, _0808DCF8
ldr r3, [r2]
lsls r2, r0, 3
adds r2, r0
lsls r2, 3
adds r2, r3
lsls r1, 1
adds r2, 0x42
adds r2, r1
movs r1, 0
ldrsh r0, [r2, r1]
bx lr
.align 2, 0
_0808DCF8: .4byte gMonsterParameters
thumb_func_end sub_808DCDC
thumb_func_start sub_808DCFC
sub_808DCFC:
lsls r0, 16
asrs r0, 16
ldr r1, _0808DD14
ldr r2, [r1]
lsls r1, r0, 3
adds r1, r0
lsls r1, 3
adds r1, r2
movs r2, 0x3E
ldrsh r0, [r1, r2]
bx lr
.align 2, 0
_0808DD14: .4byte gMonsterParameters
thumb_func_end sub_808DCFC
thumb_func_start sub_808DD18
sub_808DD18:
push {r4,lr}
lsls r0, 16
asrs r0, 16
ldr r2, _0808DD44
ldr r3, [r2]
lsls r2, r0, 3
adds r2, r0
lsls r2, 3
adds r2, r3
ldr r4, [r2, 0x20]
subs r1, 0x1
adds r0, r4, 0
muls r0, r1
movs r1, 0xA
bl __divsi3
adds r4, r0
adds r0, r4, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0808DD44: .4byte gMonsterParameters
thumb_func_end sub_808DD18
.align 2,0 @ don't pad with nop

View File

@ -24,7 +24,7 @@ sub_8012574:
cmp r4, 0
beq _080125BA
adds r0, r4, 0
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
ldr r1, [r5]
str r0, [r1, 0xC]
ldr r0, [r0, 0x4]

View File

@ -33,7 +33,7 @@ sub_8029B50:
ldr r0, _08029C48
bl strcpy
adds r0, r4, 0
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
ldr r2, [r5]
movs r3, 0x84
lsls r3, 3
@ -2914,7 +2914,7 @@ sub_802B2D4:
adds r1, r4, 0
bl sub_808D8E0
adds r0, r4, 0
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
ldr r1, [r5]
str r0, [r1, 0x4]
ldr r0, [r0, 0x4]
@ -8089,7 +8089,7 @@ _0802DB4A:
ldr r0, [r0, 0x34]
movs r1, 0xC
ldrsh r0, [r0, r1]
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
ldr r1, [r4]
str r0, [r1, 0x38]
str r5, [r1, 0x3C]
@ -10976,7 +10976,7 @@ sub_802F204:
ldr r0, [r0, 0x10]
movs r1, 0x14
ldrsh r0, [r0, r1]
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
ldr r1, [r5]
str r0, [r1, 0x14]
str r6, [r1, 0x18]
@ -12448,7 +12448,7 @@ _0802FDE0:
adds r0, r4, 0
bl strcpy
adds r0, r5, 0
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
ldr r3, _0802FE54
ldr r1, [r3]
str r0, [r1, 0x58]
@ -14712,7 +14712,7 @@ _08030F88:
str r6, [r0]
movs r0, 0x98
lsls r0, 1
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
ldr r2, [r5]
movs r4, 0x84
lsls r4, 1
@ -15385,7 +15385,7 @@ sub_80314B4:
cmp r5, 0
beq _0803151E
adds r0, r5, 0
bl sub_808DDD0
bl GetDialogueSpriteDataPtr
ldr r1, [r6]
str r0, [r1, 0x8]
strb r4, [r1, 0x14]

View File

@ -439,7 +439,30 @@ gUnknown_80D4080: @ 80D4080
.global gUnknown_80D408C
gUnknown_80D408C: @ 80D408C
.incbin "baserom.gba", 0xD408C, 0x38
.4byte wmapfont_text
.4byte wmapmcc_text
.4byte wmapcani_text
.4byte wmappal_text
.global wmappal_text
wmappal_text:
.string "wmappal\0"
.align 2,0
.global wmapcani_text
wmapcani_text:
.string "wmapcani\0"
.align 2,0
.global wmapmcc_text
wmapmcc_text:
.string "wmapmcc\0"
.align 2,0
.global wmapfont_text
wmapfont_text:
.string "wmapfont\0"
.align 2,0
.global gUnknown_80D40C4
gUnknown_80D40C4: @ 80D40C4

View File

@ -8097,7 +8097,7 @@ gUnknown_810A390: @ 810A390
.incbin "baserom.gba", 0x10A390, 0x60
.global gUnknown_810A3F0
gUnknown_810A3F0: @ 810A3F0
gUnknown_810A3F0: @ 810A3F0 (money related according to PMDe)
.incbin "baserom.gba", 0x10A3F0, 0x190
.global gUnknown_810A580
@ -8517,9 +8517,13 @@ gUnknown_810ACC0: @ 810ACC0
.byte 0x00, 0x00, 0x01, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_810AD0C
gUnknown_810AD0C: @ 810AD0C
.byte 0x89, 0x00, 0x01, 0x00
.global gExclusivePokemon
gExclusivePokemon: @ 810AD0C
@ Format:
@ Pokemon ID: 2 bytes
@ RRT: 1 byte (bool)
@ BRT: 1 byte (bool)
.byte 0x89, 0x00, 0x01, 0x00 @ Porygon (only in RRT)
.byte 0x02, 0x01, 0x00, 0x01
.byte 0x81, 0x00, 0x00, 0x01
.byte 0x82, 0x00, 0x00, 0x01

View File

@ -3,33 +3,31 @@
struct EvolveStruct1
{
u16 evolve_from;
u16 evolve_type;
/* 0x34 */ u16 evolve_from;
/* 0x36 */ u16 evolve_type;
};
struct EvolveNeeds
{
u16 evolve_need1;
u16 evolve_need2;
/* 0x38 */ u16 evolve_need1;
/* 0x3A */ u16 evolve_need2;
};
struct gPokemon
{
/* 0x0 */ u8* species;
/* 0x4 */ u8* category;
/* 0x8 */ u8 overworld_sprite;
/* 0x8 */ u8 overworld_palette;
/* 0x9 */ u8 size;
/* 0xA */ u8 unkA;
/* 0xB */ u8 unkB;
/* 0xC */ s32 move_speed;
/* 0x10 */ u16 dialogue_sprites;
/* 0x12 */ u8 unk12;
/* 0x13 */ u8 type_1;
/* 0x14 */ u8 type_2;
/* 0x13 */ u8 types[2];
/* 0x15 */ u8 walkable_tiles;
/* 0x16 */ u8 friend_area;
/* 0x17 */ u8 ability_1;
/* 0x18 */ u8 ability_2;
/* 0x17 */ u8 abilities[2];
/* 0x19 */ u8 shadow_size;
/* 0x1A */ u8 unk1A;
/* 0x1B */ u8 unk1B;
@ -37,11 +35,9 @@ struct gPokemon
/* 0x1D */ u8 unk1D;
/* 0x1E */ u16 base_hp;
/* 0x20 */ u16 base_exp;
/* 0x22 */ u16 unk22; // verified
/* 0x24 */ u16 base_att;
/* 0x26 */ u16 base_spatt;
/* 0x28 */ u16 base_def;
/* 0x2A */ u16 base_spdef;
/* 0x22 */ u16 unk22;
/* 0x24 */ u16 base_att_spatt[2];
/* 0x28 */ u16 base_def_spdef[2];
/* 0x2C */ u16 lowkick_dmg;
/* 0x2E */ u16 sizeorb_dmg;
/* 0x30 */ u8 unk30;
@ -50,12 +46,9 @@ struct gPokemon
/* 0x33 */ bool8 unk33;
/* 0x34 */ struct EvolveStruct1 pre;
/* 0x38 */ struct EvolveNeeds need;
/* 0x3C */ u16 dexNo;
/* 0x3E */ u16 internalNo; // verified
/* 0x40 */ s16 base_recruit; // verified
/* 0x42 */ u16 alphabetNo;
/* 0x44 */ u16 parentNo;
/* 0x46 */ u16 unk46;
/* 0x3C */ s16 unk3C[2]; // dexNo and internalNo
/* 0x40 */ s16 base_recruit;
/* 0x42 */ s16 unk42[2]; // alphabetNo and parentNo
};
#endif // POKEMON_H

View File

@ -113,8 +113,6 @@ SECTIONS {
src/code_80521D0_1.o(.text);
src/pokemon.o(.text);
asm/pokemon.o(.text);
src/pokemon_mid.o(.text);
asm/pokemon_1.o(.text);
src/pokemon_1.o(.text);
src/code_808DAB4.o(.text);
asm/code_808DAB4.o(.text);

View File

@ -14,61 +14,211 @@ struct unkEvolve
/* 0x4 */ struct EvolveNeeds needs;
};
s16 sub_808DD48(s16 r0, struct unkEvolve *r1)
u8 *GetCategoryString(s16 index)
{
return gMonsterParameters[index].category;
}
u8 GetPokemonSize(s16 index)
{
return gMonsterParameters[index].size;
}
u8 GetShadowSize(s16 index)
{
return gMonsterParameters[index].shadow_size;
}
s32 GetMoveSpeed(s16 index)
{
return gMonsterParameters[index].move_speed;
}
u8 GetWalkableTiles(s16 index)
{
return gMonsterParameters[index].walkable_tiles;
}
u8 GetUnk1B(s16 index)
{
return ((u8)(gMonsterParameters[index].unk1B) << 25) >> 24;
}
bool8 GetIsMoving(s16 index)
{
return gMonsterParameters[index].isMoving;
}
u8 GetUnk1D(s16 index)
{
return gMonsterParameters[index].unk1D;
}
u16 GetLowKickDmg(s16 index)
{
return gMonsterParameters[index].lowkick_dmg;
}
u16 GetSizeOrbDmg(s16 index)
{
return gMonsterParameters[index].sizeorb_dmg;
}
u8 GetFriendArea(s16 index)
{
return gMonsterParameters[index].friend_area;
}
u16 GetBaseHP(s16 index)
{
return gMonsterParameters[index].base_hp;
}
bool8 GetUnk33(s16 index)
{
return gMonsterParameters[index].unk33;
}
u8 GetUnk12(s16 index)
{
return gMonsterParameters[index].unk12;
}
s16 GetPokemonEvolveFrom(s16 index)
{
return gMonsterParameters[index].pre.evolve_from;
}
u16 GetPokemonAttSpatt(s16 index, u32 r1)
{
return gMonsterParameters[index].base_att_spatt[r1];
}
u16 GetPokemonDefSpdef(s16 index, u32 r1)
{
return gMonsterParameters[index].base_def_spdef[r1];
}
u8 GetPokemonType(s16 index, u32 typeIndex)
{
return gMonsterParameters[index].types[typeIndex];
}
u8 GetPokemonAbility(s16 index, u32 abilityIndex)
{
return gMonsterParameters[index].abilities[abilityIndex];
}
s16 sub_808DCA0(s16 index, u32 r1)
{
return gMonsterParameters[index].unk3C[r1];
}
s16 GetBaseRecruit(s16 index)
{
return gMonsterParameters[index].base_recruit;
}
s16 sub_808DCDC(s16 index, s32 r1)
{
return gMonsterParameters[index].unk42[r1];
}
s16 sub_808DCFC(s16 index)
{
return gMonsterParameters[index].unk3C[1];
}
#ifdef NONMATCHING
u32 CalculateEXPGain(s16 index, s32 level)
{
return gMonsterParameters[index].base_exp + (gMonsterParameters[index].base_exp * (level- 1)) / 10;
}
#else
NAKED
u32 CalculateEXPGain(s16 index, s32 level)
{
asm_unified("\tpush {r4,lr}\n"
"\tlsls r0, 16\n"
"\tasrs r0, 16\n"
"\tldr r2, _0808DD44\n"
"\tldr r3, [r2]\n"
"\tlsls r2, r0, 3\n"
"\tadds r2, r0\n"
"\tlsls r2, 3\n"
"\tadds r2, r3\n"
"\tldr r4, [r2, 0x20]\n"
"\tsubs r1, 0x1\n"
"\tadds r0, r4, 0\n"
"\tmuls r0, r1\n"
"\tmovs r1, 0xA\n"
"\tbl __divsi3\n"
"\tadds r4, r0\n"
"\tadds r0, r4, 0\n"
"\tpop {r4}\n"
"\tpop {r1}\n"
"\tbx r1\n"
"\t.align 2, 0\n"
"_0808DD44: .4byte gMonsterParameters");
}
#endif
s16 sub_808DD48(s16 index, struct unkEvolve *r1)
{
struct EvolveStruct1 temp2;
struct EvolveNeeds temp1;
temp1 = gMonsterParameters[r0].need;
temp2 = gMonsterParameters[r0].pre;
temp1 = gMonsterParameters[index].need;
temp2 = gMonsterParameters[index].pre;
r1->conditions = temp2;
r1->needs = temp1;
// The return value is not used anywhere, but necessary for the function to match.
return r0;
return index;
}
u8 sub_808DD68(s16 r0, u32 r1)
u8 GetPokemonOverworldPalette(s16 index, u32 r1)
{
// Had to have this cast to match
u32 temp;
temp = r0;
temp = index;
if (r1 != 0)
{
return 0xA;
return 10;
}
else
{
return gMonsterParameters[temp].overworld_sprite;
return gMonsterParameters[temp].overworld_palette;
}
}
struct OpenedFile *sub_808DD90(s16 r0)
struct OpenedFile *OpenPokemonDialogueSpriteFile(s16 index)
{
// Looks like this loads the dialogue sprite for the pokemon
char buffer[0xC];
if(gMonsterParameters[r0].dialogue_sprites == 0)
if(gMonsterParameters[index].dialogue_sprites == 0)
{
return NULL;
}
sprintf(buffer, gUnknown_8107684, r0); // "kao%03d"
sprintf(buffer, gUnknown_8107684, index); // "kao%03d"
return OpenFile(buffer, &gMonsterFileArchive);
}
struct OpenedFile *sub_808DDD0(s16 r0)
struct OpenedFile *GetDialogueSpriteDataPtr(s16 index)
{
// Looks like this loads the dialogue sprite for the pokemon
char buffer[0xC];
if(gMonsterParameters[r0].dialogue_sprites == 0)
if(gMonsterParameters[index].dialogue_sprites == 0)
{
return NULL;
}
sprintf(buffer, gUnknown_8107684, r0); // "kao%03d"
sprintf(buffer, gUnknown_8107684, index); // "kao%03d"
return OpenFileAndGetFileDataPtr(buffer, &gMonsterFileArchive);
}
bool8 sub_808DE10(s16 r0, s32 r1)
bool8 IsPokemonDialogueSpriteAvail(s16 index, s32 r1)
{
// checking to see if dialogue sprite is available??
return (gMonsterParameters[r0].dialogue_sprites >> r1) & 1;
return (gMonsterParameters[index].dialogue_sprites >> r1) & 1;
}

View File

@ -1,85 +0,0 @@
#include "global.h"
#include "pokemon.h"
extern struct gPokemon *gMonsterParameters;
u8 *GetCategoryString(s16 r0)
{
return gMonsterParameters[r0].category;
}
u8 GetPokemonSize(s16 r0)
{
return gMonsterParameters[r0].size;
}
u8 GetShadowSize(s16 r0)
{
return gMonsterParameters[r0].shadow_size;
}
s32 GetMoveSpeed(s16 r0)
{
return gMonsterParameters[r0].move_speed;
}
u8 GetWalkableTiles(s16 r0)
{
return gMonsterParameters[r0].walkable_tiles;
}
u8 GetUnk1B(s16 r0)
{
return ((u8)(gMonsterParameters[r0].unk1B) << 25) >> 24;
}
bool8 GetIsMoving(s16 r0)
{
return gMonsterParameters[r0].isMoving;
}
u8 GetUnk1D(s16 r0)
{
return gMonsterParameters[r0].unk1D;
}
u16 GetLowKickDmg(s16 r0)
{
return gMonsterParameters[r0].lowkick_dmg;
}
u16 GetSizeOrbDmg(s16 r0)
{
return gMonsterParameters[r0].sizeorb_dmg;
}
u8 GetFriendArea(s16 r0)
{
return gMonsterParameters[r0].friend_area;
}
u16 GetBaseHP(s16 r0)
{
return gMonsterParameters[r0].base_hp;
}
bool8 GetUnk33(s16 r0)
{
return gMonsterParameters[r0].unk33;
}
u8 GetUnk12(s16 r0)
{
return gMonsterParameters[r0].unk12;
}
s16 sub_808DC0C(s16 r0)
{
return gMonsterParameters[r0].pre.evolve_from;
}
// TODO fix calculation to match
//u32 sub_808DC28(s16 r0, u32 r1)
//{
// return gMonsterParameters[r0].base_att + (r1 << 1);
//}