summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/code_800D090.s4
-rw-r--r--asm/code_8012A18.s6
-rw-r--r--asm/code_801D760.s8
-rw-r--r--asm/code_8027C84.s2
-rw-r--r--asm/code_80521D0.s40
-rw-r--r--asm/code_808DAB4.s4
-rw-r--r--asm/code_808EAB0.s4
-rw-r--r--asm/code_809017C.s12
-rw-r--r--asm/code_8097F40.s6
-rw-r--r--asm/code_8098BDC.s2
-rw-r--r--asm/code_80A26CC.s2
-rw-r--r--asm/personality_test.s12
-rw-r--r--asm/pokemon.s24
-rw-r--r--asm/pokemon_1.s184
-rw-r--r--asm/save1.s2
-rw-r--r--asm/wonder_mail.s14
-rw-r--r--data/data_80B9BB8.s25
-rw-r--r--data/data_80F4278.s12
-rw-r--r--include/pokemon.h33
-rwxr-xr-xld_script.txt2
-rw-r--r--src/pokemon_1.c182
-rw-r--r--src/pokemon_mid.c85
22 files changed, 282 insertions, 383 deletions
diff --git a/asm/code_800D090.s b/asm/code_800D090.s
index 043af00..d6f365d 100644
--- a/asm/code_800D090.s
+++ b/asm/code_800D090.s
@@ -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
diff --git a/asm/code_8012A18.s b/asm/code_8012A18.s
index da4763e..ddb0ef8 100644
--- a/asm/code_8012A18.s
+++ b/asm/code_8012A18.s
@@ -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
diff --git a/asm/code_801D760.s b/asm/code_801D760.s
index 2beb2e8..3ec474f 100644
--- a/asm/code_801D760.s
+++ b/asm/code_801D760.s
@@ -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
diff --git a/asm/code_8027C84.s b/asm/code_8027C84.s
index 23e12d0..8aa4674 100644
--- a/asm/code_8027C84.s
+++ b/asm/code_8027C84.s
@@ -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
diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s
index 8ac596f..5114113 100644
--- a/asm/code_80521D0.s
+++ b/asm/code_80521D0.s
@@ -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
diff --git a/asm/code_808DAB4.s b/asm/code_808DAB4.s
index fb2a3b9..9684943 100644
--- a/asm/code_808DAB4.s
+++ b/asm/code_808DAB4.s
@@ -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
diff --git a/asm/code_808EAB0.s b/asm/code_808EAB0.s
index 7c4d5df..2223eea 100644
--- a/asm/code_808EAB0.s
+++ b/asm/code_808EAB0.s
@@ -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
diff --git a/asm/code_809017C.s b/asm/code_809017C.s
index b59bf01..f155cb0 100644
--- a/asm/code_809017C.s
+++ b/asm/code_809017C.s
@@ -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
diff --git a/asm/code_8097F40.s b/asm/code_8097F40.s
index 7409774..5368da6 100644
--- a/asm/code_8097F40.s
+++ b/asm/code_8097F40.s
@@ -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
diff --git a/asm/code_8098BDC.s b/asm/code_8098BDC.s
index c78c7be..3adf973 100644
--- a/asm/code_8098BDC.s
+++ b/asm/code_8098BDC.s
@@ -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
diff --git a/asm/code_80A26CC.s b/asm/code_80A26CC.s
index 422d194..26c886e 100644
--- a/asm/code_80A26CC.s
+++ b/asm/code_80A26CC.s
@@ -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
diff --git a/asm/personality_test.s b/asm/personality_test.s
index 4f4746d..60896e0 100644
--- a/asm/personality_test.s
+++ b/asm/personality_test.s
@@ -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]
diff --git a/asm/pokemon.s b/asm/pokemon.s
index 2030fcf..852b601 100644
--- a/asm/pokemon.s
+++ b/asm/pokemon.s
@@ -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
diff --git a/asm/pokemon_1.s b/asm/pokemon_1.s
deleted file mode 100644
index 4ca25ef..0000000
--- a/asm/pokemon_1.s
+++ /dev/null
@@ -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
diff --git a/asm/save1.s b/asm/save1.s
index 52eb5c8..5991905 100644
--- a/asm/save1.s
+++ b/asm/save1.s
@@ -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]
diff --git a/asm/wonder_mail.s b/asm/wonder_mail.s
index 1541bd0..f903140 100644
--- a/asm/wonder_mail.s
+++ b/asm/wonder_mail.s
@@ -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]
diff --git a/data/data_80B9BB8.s b/data/data_80B9BB8.s
index a675ee3..bf66ea5 100644
--- a/data/data_80B9BB8.s
+++ b/data/data_80B9BB8.s
@@ -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
diff --git a/data/data_80F4278.s b/data/data_80F4278.s
index dfb43b9..f00c9fc 100644
--- a/data/data_80F4278.s
+++ b/data/data_80F4278.s
@@ -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
diff --git a/include/pokemon.h b/include/pokemon.h
index 6c18f7d..a4857f7 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -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
diff --git a/ld_script.txt b/ld_script.txt
index a922d4c..dce23d0 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -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);
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index 80ae6a1..e76f970 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -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;
}
diff --git a/src/pokemon_mid.c b/src/pokemon_mid.c
deleted file mode 100644
index e348784..0000000
--- a/src/pokemon_mid.c
+++ /dev/null
@@ -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);
-//}