diff options
-rw-r--r-- | asm/code_800D090.s | 4 | ||||
-rw-r--r-- | asm/code_8012A18.s | 6 | ||||
-rw-r--r-- | asm/code_801D760.s | 8 | ||||
-rw-r--r-- | asm/code_8027C84.s | 2 | ||||
-rw-r--r-- | asm/code_80521D0.s | 40 | ||||
-rw-r--r-- | asm/code_808DAB4.s | 4 | ||||
-rw-r--r-- | asm/code_808EAB0.s | 4 | ||||
-rw-r--r-- | asm/code_809017C.s | 12 | ||||
-rw-r--r-- | asm/code_8097F40.s | 6 | ||||
-rw-r--r-- | asm/code_8098BDC.s | 2 | ||||
-rw-r--r-- | asm/code_80A26CC.s | 2 | ||||
-rw-r--r-- | asm/personality_test.s | 12 | ||||
-rw-r--r-- | asm/pokemon.s | 24 | ||||
-rw-r--r-- | asm/pokemon_1.s | 184 | ||||
-rw-r--r-- | asm/save1.s | 2 | ||||
-rw-r--r-- | asm/wonder_mail.s | 14 | ||||
-rw-r--r-- | data/data_80B9BB8.s | 25 | ||||
-rw-r--r-- | data/data_80F4278.s | 12 | ||||
-rw-r--r-- | include/pokemon.h | 33 | ||||
-rwxr-xr-x | ld_script.txt | 2 | ||||
-rw-r--r-- | src/pokemon_1.c | 182 | ||||
-rw-r--r-- | src/pokemon_mid.c | 85 |
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); -//} |