From cd2c46d027e31a2126ebe89c305a68b0d92b53f9 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 15 Dec 2024 10:08:16 -0800 Subject: [PATCH] finish off pokemon_3.s thanks to @DizzyEggg --- asm/pokemon_3.s | 1001 ---------------------------------------- include/code_8024458.h | 4 +- include/pokemon_3.h | 40 +- ld_script.txt | 1 - src/code_8024458.c | 4 +- src/pokemon_3.c | 910 ++++++++++++++++++++++++++++++++++++ 6 files changed, 950 insertions(+), 1010 deletions(-) delete mode 100644 asm/pokemon_3.s diff --git a/asm/pokemon_3.s b/asm/pokemon_3.s deleted file mode 100644 index 8a2481a24..000000000 --- a/asm/pokemon_3.s +++ /dev/null @@ -1,1001 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start CreatePokemonInfoTabScreen -CreatePokemonInfoTabScreen: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x30 - adds r5, r0, 0 - adds r4, r1, 0 - mov r10, r2 - str r3, [sp, 0x2C] - ldr r0, [sp, 0x50] - bl sub_80073B8 - ldr r0, _0808F880 - mov r1, r10 - adds r1, 0x2 - movs r2, 0x14 - bl strncpy - movs r0, 0x20 - mov r9, r0 - cmp r5, 0x5 - bls _0808F874 - b _0808FED6 -_0808F874: - lsls r0, r5, 2 - ldr r1, _0808F884 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808F880: .4byte gFormatBuffer_Monsters -_0808F884: .4byte _0808F888 - .align 2, 0 -_0808F888: - .4byte _0808FED6 - .4byte _0808FBF4 - .4byte _0808F8A0 - .4byte _0808FB44 - .4byte _0808FCB0 - .4byte _0808FDB0 -_0808F8A0: - lsls r0, r4, 3 - adds r0, 0x10 - ldr r2, _0808F998 - movs r5, 0 - str r5, [sp] - movs r1, 0 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - ldr r4, _0808F99C - mov r1, r10 - ldr r0, [r1, 0x2C] - str r0, [r4] - ldr r0, [r1, 0x30] - str r0, [r4, 0x4] - ldr r0, _0808F9A0 - ldr r2, [r0] - str r5, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - movs r2, 0xA - add r9, r2 - ldr r0, _0808F9A4 - ldr r2, [r0] - str r5, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - movs r3, 0xA - add r9, r3 - mov r0, r10 - ldr r2, [r0, 0x2C] - cmp r2, 0x63 - bgt _0808F914 - movs r3, 0 - ldrsh r1, [r0, r3] - adds r2, 0x1 - add r0, sp, 0x8 - bl GetPokemonLevelData - ldr r0, [sp, 0x8] - mov r2, r10 - ldr r1, [r2, 0x30] - subs r0, r1 - str r0, [r4] - ldr r0, _0808F9A8 - ldr r2, [r0] - str r5, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow -_0808F914: - movs r3, 0xC - add r9, r3 - mov r1, r10 - ldr r0, [r1, 0x24] - str r0, [r4] - ldr r0, [r1, 0x28] - str r0, [r4, 0x4] - ldr r0, _0808F9AC - ldr r2, [r0] - str r5, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - movs r2, 0xA - add r9, r2 - ldr r0, _0808F9B0 - ldr r2, [r0] - str r5, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - ldr r0, _0808F9B4 - ldr r2, [r0] - mov r0, r10 - adds r0, 0x34 - ldrb r3, [r0] - str r3, [r4] - mov r1, r10 - adds r1, 0x39 - ldrb r0, [r1] - cmp r0, 0 - beq _0808F964 - adds r0, r3, r0 - str r0, [r4] - ldr r0, _0808F9B8 - ldr r2, [r0] -_0808F964: - str r5, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - mov r1, r10 - adds r1, 0x3B - ldrb r3, [r1] - cmp r3, 0 - beq _0808F9C0 - mov r0, r10 - adds r0, 0x36 - ldrb r0, [r0] - adds r1, r3, 0 - adds r0, r1 - str r0, [r4] - ldr r0, _0808F9BC - ldr r2, [r0] - str r5, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - b _0808F9D8 - .align 2, 0 -_0808F998: .4byte gUnknown_8107754 -_0808F99C: .4byte gFormatArgs -_0808F9A0: .4byte gLevel810DD6C_Ptr -_0808F9A4: .4byte gExpPts810DD9C_Ptr -_0808F9A8: .4byte gUnknown_810DDB8 -_0808F9AC: .4byte gUnknown_810DDD0 -_0808F9B0: .4byte gUnknown_810DDE4 -_0808F9B4: .4byte gUnknown_810DE0C -_0808F9B8: .4byte gUnknown_810DE20 -_0808F9BC: .4byte gUnknown_810DE4C -_0808F9C0: - mov r0, r10 - adds r0, 0x36 - ldrb r0, [r0] - str r0, [r4] - ldr r0, _0808FA44 - ldr r2, [r0] - str r3, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow -_0808F9D8: - movs r3, 0xA - add r9, r3 - ldr r0, _0808FA48 - ldr r2, [r0] - movs r5, 0 - str r5, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - ldr r0, _0808FA4C - ldr r2, [r0] - ldr r4, _0808FA50 - mov r0, r10 - adds r0, 0x35 - ldrb r3, [r0] - str r3, [r4] - mov r1, r10 - adds r1, 0x3A - ldrb r0, [r1] - cmp r0, 0 - beq _0808FA0E - adds r0, r3, r0 - str r0, [r4] - ldr r0, _0808FA54 - ldr r2, [r0] -_0808FA0E: - str r5, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - mov r1, r10 - adds r1, 0x3C - ldrb r3, [r1] - cmp r3, 0 - beq _0808FA5C - mov r0, r10 - adds r0, 0x37 - ldrb r0, [r0] - adds r1, r3, 0 - adds r0, r1 - str r0, [r4] - ldr r0, _0808FA58 - ldr r2, [r0] - str r5, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - b _0808FA74 - .align 2, 0 -_0808FA44: .4byte gUnknown_810DE38 -_0808FA48: .4byte gUnknown_810DDFC -_0808FA4C: .4byte gUnknown_810DE24 -_0808FA50: .4byte gFormatArgs -_0808FA54: .4byte gUnknown_810DE28 -_0808FA58: .4byte gUnknown_810DE54 -_0808FA5C: - mov r0, r10 - adds r0, 0x37 - ldrb r0, [r0] - str r0, [r4] - ldr r0, _0808FA94 - ldr r2, [r0] - str r3, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow -_0808FA74: - movs r0, 0xA - add r9, r0 - mov r2, r10 - adds r2, 0x20 - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0808FA9C - ldr r0, _0808FA98 - adds r1, r2, 0 - movs r2, 0 - bl sub_8090E14 - b _0808FAA6 - .align 2, 0 -_0808FA94: .4byte gUnknown_810DE50 -_0808FA98: .4byte gFormatBuffer_Items -_0808FA9C: - ldr r0, _0808FB24 - ldr r1, _0808FB28 - ldr r1, [r1] - bl strcpy -_0808FAA6: - ldr r0, _0808FB2C - ldr r2, [r0] - movs r4, 0 - str r4, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - movs r1, 0xC - add r9, r1 - ldr r1, _0808FB30 - mov r2, r10 - movs r3, 0x3E - ldrsh r0, [r2, r3] - str r0, [r1] - movs r1, 0x3E - ldrsh r0, [r2, r1] - movs r1, 0xA - bl __divsi3 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _0808FADA - movs r0, 0 -_0808FADA: - cmp r0, 0x62 - ble _0808FAE0 - movs r0, 0x63 -_0808FAE0: - ldr r1, _0808FB34 - lsls r0, 2 - adds r0, r1 - ldr r5, _0808FB38 - ldr r1, [r0] - adds r0, r5, 0 - bl strcpy - ldr r0, _0808FB3C - ldr r2, [r0] - str r4, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - movs r2, 0xA - add r9, r2 - mov r0, r10 - adds r0, 0x38 - ldrb r4, [r0] - cmp r4, 0 - beq _0808FB10 - b _0808FED6 -_0808FB10: - adds r0, 0x1C - ldrb r1, [r0] - adds r0, r5, 0 - bl CopyTacticsNameToBuffer - ldr r0, _0808FB40 - ldr r2, [r0] - str r4, [sp] - b _0808FECC - .align 2, 0 -_0808FB24: .4byte gFormatBuffer_Items -_0808FB28: .4byte gUnknown_810DE58 -_0808FB2C: .4byte gUnknown_810DE6C -_0808FB30: .4byte gFormatArgs -_0808FB34: .4byte gUnknown_8115718 -_0808FB38: .4byte gFormatBuffer_Monsters -_0808FB3C: .4byte gUnknown_810DE80 -_0808FB40: .4byte gUnknown_810DE98 -_0808FB44: - lsls r0, r4, 3 - adds r0, 0x10 - ldr r2, _0808FBE8 - movs r4, 0 - str r4, [sp] - movs r1, 0 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - ldr r2, _0808FBEC - str r4, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - mov r3, r10 - ldrb r0, [r3, 0x16] - bl GetFormattedTypeString - adds r2, r0, 0 - str r4, [sp] - movs r0, 0x38 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - mov r1, r10 - ldrb r0, [r1, 0x17] - cmp r0, 0 - beq _0808FB94 - bl GetFormattedTypeString - adds r2, r0, 0 - str r4, [sp] - movs r0, 0x60 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow -_0808FB94: - movs r2, 0xC - add r9, r2 - ldr r2, _0808FBF0 - str r4, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - movs r3, 0xC - add r9, r3 - mov r1, r10 - ldrb r0, [r1, 0x18] - bl GetAbilityDescription - adds r2, r0, 0 - str r4, [sp] - movs r5, 0xB - str r5, [sp, 0x4] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow2 - movs r2, 0x21 - add r9, r2 - mov r3, r10 - ldrb r0, [r3, 0x19] - cmp r0, 0 - bne _0808FBD2 - b _0808FED6 -_0808FBD2: - bl GetAbilityDescription - adds r2, r0, 0 - str r4, [sp] - str r5, [sp, 0x4] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow2 - b _0808FED6 - .align 2, 0 -_0808FBE8: .4byte gUnknown_810775C -_0808FBEC: .4byte gUnknown_8107768 -_0808FBF0: .4byte gUnknown_8107770 -_0808FBF4: - lsls r0, r4, 3 - adds r0, 0x10 - ldr r1, _0808FC34 - ldr r2, [r1] - movs r1, 0 - str r1, [sp] - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - mov r0, r10 - adds r0, 0x56 - movs r1, 0 - ldrsh r0, [r0, r1] - subs r5, r0, 0x1 - movs r2, 0xC - negs r2, r2 - add r9, r2 - movs r7, 0 - ldr r6, [sp, 0x2C] - adds r6, 0xC - adds r1, r6, 0 - movs r2, 0 - ldr r0, [sp, 0x2C] - adds r0, 0x2C -_0808FC24: - str r2, [r0] - subs r0, 0x4 - cmp r0, r1 - bge _0808FC24 - movs r3, 0 - mov r8, r3 - b _0808FC88 - .align 2, 0 -_0808FC34: .4byte gUnknown_810DD58 -_0808FC38: - mov r0, r10 - adds r0, 0x58 - adds r4, r0, r5 - ldrb r0, [r4] - cmp r0, 0 - beq _0808FC78 - movs r7, 0x1 - ldr r0, _0808FCA0 - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, _0808FCA4 - ldr r1, [r1] - movs r2, 0x50 - bl strncpy - ldr r2, _0808FCA8 - movs r0, 0 - str r0, [sp] - movs r0, 0xC - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - mov r0, r8 - cmp r0, 0 - ble _0808FC78 - subs r0, 0x1 - lsls r0, 2 - adds r0, r6, r0 - ldrb r1, [r4] - str r1, [r0] -_0808FC78: - movs r1, 0x1 - add r8, r1 - adds r5, 0x1 - movs r2, 0xC - add r9, r2 - mov r3, r8 - cmp r3, 0x9 - bgt _0808FC90 -_0808FC88: - cmp r5, 0 - blt _0808FC78 - cmp r5, 0xB - ble _0808FC38 -_0808FC90: - cmp r7, 0 - beq _0808FC96 - b _0808FED6 -_0808FC96: - ldr r0, _0808FCAC - ldr r2, [r0] - str r7, [sp] - b _0808FD98 - .align 2, 0 -_0808FCA0: .4byte gStatusNames -_0808FCA4: .4byte gFormatBuffer_Items + 0x50 -_0808FCA8: .4byte gUnknown_8107784 -_0808FCAC: .4byte gUnknown_810DF78 -_0808FCB0: - lsls r0, r4, 3 - adds r0, 0x10 - ldr r1, _0808FCF8 - ldr r2, [r1] - movs r1, 0 - str r1, [sp] - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - add r4, sp, 0x14 - mov r0, r10 - movs r2, 0x3E - ldrsh r1, [r0, r2] - adds r0, r4, 0 - bl GetNumAvailableIQSkills - mov r0, r10 - adds r0, 0x40 - movs r3, 0 - ldrsh r0, [r0, r3] - subs r7, r0, 0x1 - mov r1, r9 - subs r1, 0xC - movs r2, 0 - ldr r0, [sp, 0x2C] - adds r0, 0x8 -_0808FCE4: - strb r2, [r0] - subs r0, 0x1 - ldr r3, [sp, 0x2C] - cmp r0, r3 - bge _0808FCE4 - mov r9, r1 - movs r4, 0 - mov r8, r4 - b _0808FD84 - .align 2, 0 -_0808FCF8: .4byte gIQSkill810DD68_Ptr -_0808FCFC: - mov r5, sp - adds r5, r7 - adds r5, 0x14 - ldrb r0, [r5] - cmp r0, 0 - beq _0808FD74 - movs r4, 0x1 - bl GetIQSkillName - adds r1, r0, 0 - ldr r6, _0808FD3C - adds r0, r6, 0 - movs r2, 0x50 - bl strncpy - mov r0, r10 - adds r0, 0x50 - adds r1, r4, 0 - ldrb r5, [r5] - lsls r1, r5 - bl IsIQSkillSet - lsls r0, 24 - cmp r0, 0 - beq _0808FD44 - adds r0, r6, 0 - subs r0, 0x50 - ldr r1, _0808FD40 - bl strcpy - b _0808FD4E - .align 2, 0 -_0808FD3C: .4byte gFormatBuffer_Items + 0x50 -_0808FD40: .4byte gUnknown_8107788 -_0808FD44: - adds r0, r6, 0 - subs r0, 0x50 - ldr r1, _0808FDA4 - bl strcpy -_0808FD4E: - mov r0, r8 - cmp r0, 0 - ble _0808FD64 - subs r0, 0x1 - ldr r1, [sp, 0x2C] - adds r0, r1, r0 - mov r1, sp - adds r1, r7 - adds r1, 0x14 - ldrb r1, [r1] - strb r1, [r0] -_0808FD64: - ldr r2, _0808FDA8 - movs r0, 0 - str r0, [sp] - movs r0, 0xC - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow -_0808FD74: - movs r2, 0x1 - add r8, r2 - adds r7, 0x1 - movs r3, 0xC - add r9, r3 - mov r0, r8 - cmp r0, 0x9 - bgt _0808FD8C -_0808FD84: - cmp r7, 0 - blt _0808FD74 - cmp r7, 0x17 - ble _0808FCFC -_0808FD8C: - cmp r4, 0 - beq _0808FD92 - b _0808FED6 -_0808FD92: - ldr r0, _0808FDAC - ldr r2, [r0] - str r4, [sp] -_0808FD98: - movs r0, 0xC - movs r1, 0x20 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - b _0808FED6 - .align 2, 0 -_0808FDA4: .4byte gUnknown_810778C -_0808FDA8: .4byte gUnknown_8107790 -_0808FDAC: .4byte gUnknown_810DF84 -_0808FDB0: - lsls r0, r4, 3 - adds r0, 0x10 - ldr r2, _0808FEEC - movs r5, 0 - str r5, [sp] - movs r1, 0 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - ldr r6, _0808FEF0 - mov r2, r10 - movs r3, 0 - ldrsh r1, [r2, r3] - adds r0, r6, 0 - bl CopyMonsterNameToBuffer - ldr r1, _0808FEF4 - mov r2, r10 - movs r3, 0 - ldrsh r0, [r2, r3] - str r0, [r1] - ldr r0, _0808FEF8 - ldr r2, [r0] - str r5, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - movs r0, 0xA - add r9, r0 - mov r1, r10 - movs r2, 0 - ldrsh r0, [r1, r2] - bl GetFriendArea - lsls r0, 24 - lsrs r0, 24 - bl GetFriendAreaName - adds r1, r0, 0 - ldr r4, _0808FEFC - adds r0, r4, 0 - movs r2, 0x50 - bl strncpy - ldr r0, _0808FF00 - ldr r2, [r0] - str r5, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - movs r3, 0xA - add r9, r3 - ldr r0, _0808FF04 - ldr r2, [r0] - str r5, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - movs r0, 0xD - add r9, r0 - ldr r0, _0808FF08 - ldr r2, [r0] - str r5, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - movs r1, 0xA - add r9, r1 - mov r1, r10 - adds r1, 0x1C - adds r0, r4, 0 - bl PrintYellowDungeonNametoBuffer - ldr r0, _0808FF0C - ldr r2, [r0] - str r5, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - movs r2, 0xD - add r9, r2 - mov r3, r10 - movs r1, 0 - ldrsh r0, [r3, r1] - bl GetCategoryString - adds r1, r0, 0 - adds r0, r6, 0 - movs r2, 0x14 - bl strncpy - ldr r0, _0808FF10 - ldr r2, [r0] - str r5, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - movs r2, 0xD - add r9, r2 - ldr r4, _0808FF14 - mov r3, r10 - movs r1, 0 - ldrsh r0, [r3, r1] - bl GetBodySize - lsls r0, 24 - lsrs r0, 22 - adds r0, r4 - ldr r1, [r0] - adds r0, r6, 0 - bl strcpy - ldr r0, _0808FF18 - ldr r2, [r0] - str r5, [sp] - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow - movs r2, 0xD - add r9, r2 - ldr r1, _0808FF1C - mov r0, r10 - adds r0, 0x4C - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r2, [r0] - str r5, [sp] -_0808FECC: - movs r0, 0x4 - mov r1, r9 - ldr r3, [sp, 0x50] - bl PrintFormattedStringOnWindow -_0808FED6: - ldr r0, [sp, 0x50] - bl sub_80073E0 - add sp, 0x30 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808FEEC: .4byte gUnknown_8107798 -_0808FEF0: .4byte gFormatBuffer_Monsters -_0808FEF4: .4byte gFormatArgs -_0808FEF8: .4byte gUnknown_810DEB4 -_0808FEFC: .4byte gFormatBuffer_Items -_0808FF00: .4byte gUnknown_810DEC8 -_0808FF04: .4byte gUnknown_810DEDC -_0808FF08: .4byte gUnknown_810DFB4 -_0808FF0C: .4byte gUnknown_810DFC8 -_0808FF10: .4byte gUnknown_810DEF4 -_0808FF14: .4byte gUnknown_810E02C -_0808FF18: .4byte gUnknown_810DF98 -_0808FF1C: .4byte gEvolutionStrings - thumb_func_end CreatePokemonInfoTabScreen - - thumb_func_start sub_808FF20 -sub_808FF20: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - adds r6, r1, 0 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - adds r0, r5, 0x2 - movs r2, 0 - bl PrintColoredPokeNameToBuffer - ldrh r0, [r6, 0x8] - strh r0, [r5] - movs r1, 0x16 - ldrsh r0, [r6, r1] - str r0, [r5, 0x24] - str r0, [r5, 0x28] - ldrb r0, [r6, 0x3] - str r0, [r5, 0x2C] - ldr r0, [r6, 0x1C] - str r0, [r5, 0x30] - movs r4, 0 -_0808FF50: - adds r1, r5, 0 - adds r1, 0x34 - adds r1, r4 - adds r0, r6, 0 - adds r0, 0x18 - adds r0, r4 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r5, 0 - adds r1, 0x36 - adds r1, r4 - adds r0, r6, 0 - adds r0, 0x1A - adds r0, r4 - ldrb r0, [r0] - strb r0, [r1] - movs r7, 0x8 - ldrsh r0, [r6, r7] - adds r1, r4, 0 - bl GetPokemonType - adds r1, r5, 0 - adds r1, 0x16 - adds r1, r4 - strb r0, [r1] - movs r1, 0x8 - ldrsh r0, [r6, r1] - adds r1, r4, 0 - bl GetPokemonAbility - adds r1, r5, 0 - adds r1, 0x18 - adds r1, r4 - strb r0, [r1] - adds r4, 0x1 - cmp r4, 0x1 - ble _0808FF50 - ldrb r2, [r6, 0x2] - adds r1, r5, 0 - adds r1, 0x38 - movs r0, 0 - strb r2, [r1] - adds r2, r5, 0 - adds r2, 0x39 - strb r0, [r2] - adds r3, r5, 0 - adds r3, 0x3A - strb r0, [r3] - movs r7, 0x3B - adds r7, r5 - mov r12, r7 - strb r0, [r7] - movs r1, 0x3C - adds r1, r5 - mov r9, r1 - strb r0, [r1] - adds r0, r6, 0 - adds r0, 0x28 - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0 - beq _08090026 - cmp r1, 0x13 - bne _0808FFDA - ldr r0, _08090060 - ldrb r0, [r0] - ldrb r7, [r2] - adds r0, r7 - strb r0, [r2] -_0808FFDA: - ldrb r1, [r4] - cmp r1, 0x21 - bne _0808FFEA - ldr r0, _08090064 - ldrb r0, [r0] - ldrb r7, [r3] - adds r0, r7 - strb r0, [r3] -_0808FFEA: - cmp r1, 0x2B - bne _0808FFFE - ldr r0, _08090068 - ldrb r0, [r0] - ldrb r7, [r2] - adds r1, r0, r7 - strb r1, [r2] - ldrb r1, [r3] - adds r0, r1 - strb r0, [r3] -_0808FFFE: - ldrb r0, [r4] - cmp r0, 0x1E - bne _08090012 - ldr r0, _0809006C - ldrb r0, [r0] - mov r2, r12 - ldrb r2, [r2] - adds r0, r2 - mov r7, r12 - strb r0, [r7] -_08090012: - ldrb r0, [r4] - cmp r0, 0x22 - bne _08090026 - ldr r0, _08090070 - ldrb r0, [r0] - mov r1, r9 - ldrb r1, [r1] - adds r0, r1 - mov r2, r9 - strb r0, [r2] -_08090026: - adds r0, r6, 0 - adds r0, 0x24 - ldrb r1, [r0] - adds r0, r5, 0 - adds r0, 0x54 - strb r1, [r0] - subs r0, 0x34 - adds r1, r4, 0 - bl HeldItemToSlot - ldrh r0, [r6, 0x14] - strh r0, [r5, 0x3E] - ldr r0, [r6, 0x4] - str r0, [r5, 0x1C] - ldr r0, [r6, 0xC] - str r0, [r5, 0x44] - ldr r0, [r6, 0x10] - str r0, [r5, 0x48] - ldr r0, [r6, 0x20] - str r0, [r5, 0x50] - mov r7, r8 - cmp r7, 0 - beq _08090074 - adds r0, r6, 0 - bl sub_808F700 - adds r1, r5, 0 - adds r1, 0x4C - b _0809007A - .align 2, 0 -_08090060: .4byte gUnknown_810AC60 -_08090064: .4byte gUnknown_810AC62 -_08090068: .4byte gUnknown_810AC68 -_0809006C: .4byte gUnknown_810AC64 -_08090070: .4byte gUnknown_810AC66 -_08090074: - adds r1, r5, 0 - adds r1, 0x4C - movs r0, 0x3 -_0809007A: - strb r0, [r1] - adds r1, r5, 0 - adds r1, 0x58 - movs r2, 0 - adds r0, r5, 0 - adds r0, 0x63 -_08090086: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _08090086 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_808FF20 - - .align 2,0 diff --git a/include/code_8024458.h b/include/code_8024458.h index 865bc5d5f..f9f50961d 100644 --- a/include/code_8024458.h +++ b/include/code_8024458.h @@ -4,6 +4,7 @@ #include "structs/menu.h" #include "structs/str_text.h" +#include "pokemon_3.h" struct unkStruct_203B2AC { @@ -11,8 +12,7 @@ struct unkStruct_203B2AC u32 unk34[3]; u8 unk40[0x48 - 0x40]; s16 speciesNum; - u32 unk4C; - u8 unk50[0xB0 - 0x50]; + struct unkStruct_808FF20 unk4C; u32 unkB0; u8 fillB4[0xE0 - 0xB4]; u32 unkE0; diff --git a/include/pokemon_3.h b/include/pokemon_3.h index dbda724fe..436a5ad73 100644 --- a/include/pokemon_3.h +++ b/include/pokemon_3.h @@ -15,6 +15,40 @@ typedef struct EvolveStatus /* 0x6 */ s16 targetEvolveSpecies; } EvolveStatus; +struct unkStruct_808FF20 +{ + // size: 0x64 + s16 species; + u8 nameBuffer[0x14]; + u8 types[2]; // 0x16 + u8 abilities[2]; // 0x18 + u8 fill1A[0x1C - 0x1A]; + DungeonLocation dungeonLocation; // 0x1C + Item item; // 0x20 + s32 HP1; + s32 HP2; + s32 level; + u32 exp; + Offense offense; + bool8 isTeamLeader; + u8 atkBoost; + u8 spAtkBoost; + u8 defBoost; + u8 spDefBoost; + u8 fill3D; + s16 IQ; // 0x3E + s16 unk40; + s16 fill42; + struct unkPokeSubStruct_C unk44[2]; + u8 unk4C; + u8 fill4D[3]; + IqSkillFlags IQSkills; // 0x50 + u8 tactic; + u8 fill55[1]; + s16 unk56; + u8 unk58[12]; +}; + bool8 HasRecruitedMon(s16 species); s16 GetBaseSpecies(s16 index); s16 GetBaseSpeciesNoUnown(s16 index); @@ -36,9 +70,7 @@ s16 ExtractSpeciesIndex(UnkDungeonGlobal_unk1CD98 *r0); void SetSpeciesLevelToExtract(UnkDungeonGlobal_unk1CD98 *r0, s32 level, s32 species); s32 ExtractLevel(UnkDungeonGlobal_unk1CD98 *r0); PokemonStruct1 *sub_808F798(PokemonStruct1 *pokemon, short _species); - -// pokemon_3.s -extern void CreatePokemonInfoTabScreen(u32, s16, u32 *, u32 *, u32); -extern void sub_808FF20(u32 *, PokemonStruct1 *, bool8); +void CreatePokemonInfoTabScreen(u32, s32, struct unkStruct_808FF20 *, u8 *, u32); +void sub_808FF20(struct unkStruct_808FF20 *param_1, struct PokemonStruct1 *pokemon, bool8 param_3); #endif // GUARD_POKEMON_3_H diff --git a/ld_script.txt b/ld_script.txt index 930594965..c8719c443 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -288,7 +288,6 @@ SECTIONS { src/pokemon.o(.text); asm/pokemon_2.o(.text); src/pokemon_3.o(.text); - asm/pokemon_3.o(.text); src/dungeon.o(.text); asm/dungeon_2.o(.text); src/dungeon_2_1.o(.text); diff --git a/src/code_8024458.c b/src/code_8024458.c index a900360a5..c7c4915df 100644 --- a/src/code_8024458.c +++ b/src/code_8024458.c @@ -83,13 +83,13 @@ static void sub_8024588(void) static void sub_80245D0(void) { - CreatePokemonInfoTabScreen(sUnknown_203B2AC->unk34[sUnknown_203B2AC->input.unk1E], sUnknown_203B2AC->input.unk1E, &sUnknown_203B2AC->unk4C, &sUnknown_203B2AC->unkB0, sUnknown_203B2AC->unkE0); + CreatePokemonInfoTabScreen(sUnknown_203B2AC->unk34[sUnknown_203B2AC->input.unk1E], sUnknown_203B2AC->input.unk1E, &sUnknown_203B2AC->unk4C, (u8 *)&sUnknown_203B2AC->unkB0, sUnknown_203B2AC->unkE0); } static void sub_8024604(void) { PokemonStruct1 *pokeStruct; - u32 *iVar3; + struct unkStruct_808FF20 *iVar3; sUnknown_203B2AC->unk34[0] = 2; sUnknown_203B2AC->unk34[1] = 3; diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 9dc2b1145..cf84f4f07 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -2,6 +2,7 @@ #include "pokemon.h" #include "pokemon_3.h" #include "random.h" +#include "constants/colors.h" #include "constants/dungeon.h" #include "constants/evolve_type.h" #include "constants/evolution_status.h" @@ -41,6 +42,48 @@ extern s16 gUnknown_810AC62; // 0xC extern s16 gUnknown_810AC68; // 0x8 extern s16 gUnknown_810AC64; // 0x8 extern s16 gUnknown_810AC66; // 0x8 +extern u8 *gUnknown_810DD58[]; +extern u8 *gEvolutionStrings[]; +extern u8 *gExpPts810DD9C_Ptr[]; +extern u8 *gIQSkill810DD68_Ptr[]; +extern u8 *gLevel810DD6C_Ptr[]; +extern u8 *gStatusNames[]; +extern u8 gUnknown_8107754[]; +extern u8 gUnknown_810775C[]; +extern u8 gUnknown_8107768[]; +extern u8 gUnknown_8107770[]; +extern u8 gUnknown_8107784[]; +extern u8 gUnknown_8107788[]; +extern u8 gUnknown_810778C[]; +extern u8 gUnknown_8107790[]; +extern u8 gUnknown_8107798[]; +extern u8 *gUnknown_810DDB8[]; +extern u8 *gUnknown_810DDD0[]; +extern u8 *gUnknown_810DDE4[]; +extern u8 *gUnknown_810DDFC[]; +extern u8 *gUnknown_810DE0C[]; +extern u8 *gUnknown_810DE20[]; +extern u8 *gUnknown_810DE24[]; +extern u8 *gUnknown_810DE28[]; +extern u8 *gUnknown_810DE38[]; +extern u8 *gUnknown_810DE4C[]; +extern u8 *gUnknown_810DE50[]; +extern u8 *gUnknown_810DE54[]; +extern u8 *gUnknown_810DE58[]; +extern u8 *gUnknown_810DE6C[]; +extern u8 *gUnknown_810DE80[]; +extern u8 *gUnknown_810DE98[]; +extern u8 *gUnknown_810DEB4[]; +extern u8 *gUnknown_810DEC8[]; +extern u8 *gUnknown_810DEDC[]; +extern u8 *gUnknown_810DEF4[]; +extern u8 *gUnknown_810DF78[]; +extern u8 *gUnknown_810DF84[]; +extern u8 *gUnknown_810DF98[]; +extern u8 *gUnknown_810DFB4[]; +extern u8 *gUnknown_810DFC8[]; +extern u8 *gUnknown_810E02C[]; +extern u8 *gUnknown_8115718[]; // 2, 4, 6, 7, 8, 9, 0xA, 0xD, 0xF, 0x11 extern s32 gUnknown_810AC90[10]; @@ -1160,3 +1203,870 @@ UNUSED void sub_808F83C(PokemonStruct1 *pokemon, s16 species, u8 *r2) { *r2 = 0; } + + +// https://decomp.me/scratch/qONOW - 91.59% matched (Seth) +NAKED +void CreatePokemonInfoTabScreen(u32 param_1, s32 param_2, struct unkStruct_808FF20 *param_3, u8 *param_4, u32 param_5) +{ + asm_unified( +" push {r4-r7,lr}\n" +" mov r7, r10\n" +" mov r6, r9\n" +" mov r5, r8\n" +" push {r5-r7}\n" +" sub sp, 0x30\n" +" adds r5, r0, 0\n" +" adds r4, r1, 0\n" +" mov r10, r2\n" +" str r3, [sp, 0x2C]\n" +" ldr r0, [sp, 0x50]\n" +" bl sub_80073B8\n" +" ldr r0, _0808F880\n" +" mov r1, r10\n" +" adds r1, 0x2\n" +" movs r2, 0x14\n" +" bl strncpy\n" +" movs r0, 0x20\n" +" mov r9, r0\n" +" cmp r5, 0x5\n" +" bls _0808F874\n" +" b _0808FED6\n" +"_0808F874:\n" +" lsls r0, r5, 2\n" +" ldr r1, _0808F884\n" +" adds r0, r1\n" +" ldr r0, [r0]\n" +" mov pc, r0\n" +" .align 2, 0\n" +"_0808F880: .4byte gFormatBuffer_Monsters\n" +"_0808F884: .4byte _0808F888\n" +" .align 2, 0\n" +"_0808F888:\n" +" .4byte _0808FED6\n" +" .4byte _0808FBF4\n" +" .4byte _0808F8A0\n" +" .4byte _0808FB44\n" +" .4byte _0808FCB0\n" +" .4byte _0808FDB0\n" +"_0808F8A0:\n" +" lsls r0, r4, 3\n" +" adds r0, 0x10\n" +" ldr r2, _0808F998\n" +" movs r5, 0\n" +" str r5, [sp]\n" +" movs r1, 0\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" ldr r4, _0808F99C\n" +" mov r1, r10\n" +" ldr r0, [r1, 0x2C]\n" +" str r0, [r4]\n" +" ldr r0, [r1, 0x30]\n" +" str r0, [r4, 0x4]\n" +" ldr r0, _0808F9A0\n" +" ldr r2, [r0]\n" +" str r5, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" movs r2, 0xA\n" +" add r9, r2\n" +" ldr r0, _0808F9A4\n" +" ldr r2, [r0]\n" +" str r5, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" movs r3, 0xA\n" +" add r9, r3\n" +" mov r0, r10\n" +" ldr r2, [r0, 0x2C]\n" +" cmp r2, 0x63\n" +" bgt _0808F914\n" +" movs r3, 0\n" +" ldrsh r1, [r0, r3]\n" +" adds r2, 0x1\n" +" add r0, sp, 0x8\n" +" bl GetPokemonLevelData\n" +" ldr r0, [sp, 0x8]\n" +" mov r2, r10\n" +" ldr r1, [r2, 0x30]\n" +" subs r0, r1\n" +" str r0, [r4]\n" +" ldr r0, _0808F9A8\n" +" ldr r2, [r0]\n" +" str r5, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +"_0808F914:\n" +" movs r3, 0xC\n" +" add r9, r3\n" +" mov r1, r10\n" +" ldr r0, [r1, 0x24]\n" +" str r0, [r4]\n" +" ldr r0, [r1, 0x28]\n" +" str r0, [r4, 0x4]\n" +" ldr r0, _0808F9AC\n" +" ldr r2, [r0]\n" +" str r5, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" movs r2, 0xA\n" +" add r9, r2\n" +" ldr r0, _0808F9B0\n" +" ldr r2, [r0]\n" +" str r5, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" ldr r0, _0808F9B4\n" +" ldr r2, [r0]\n" +" mov r0, r10\n" +" adds r0, 0x34\n" +" ldrb r3, [r0]\n" +" str r3, [r4]\n" +" mov r1, r10\n" +" adds r1, 0x39\n" +" ldrb r0, [r1]\n" +" cmp r0, 0\n" +" beq _0808F964\n" +" adds r0, r3, r0\n" +" str r0, [r4]\n" +" ldr r0, _0808F9B8\n" +" ldr r2, [r0]\n" +"_0808F964:\n" +" str r5, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" mov r1, r10\n" +" adds r1, 0x3B\n" +" ldrb r3, [r1]\n" +" cmp r3, 0\n" +" beq _0808F9C0\n" +" mov r0, r10\n" +" adds r0, 0x36\n" +" ldrb r0, [r0]\n" +" adds r1, r3, 0\n" +" adds r0, r1\n" +" str r0, [r4]\n" +" ldr r0, _0808F9BC\n" +" ldr r2, [r0]\n" +" str r5, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" b _0808F9D8\n" +" .align 2, 0\n" +"_0808F998: .4byte gUnknown_8107754\n" +"_0808F99C: .4byte gFormatArgs\n" +"_0808F9A0: .4byte gLevel810DD6C_Ptr\n" +"_0808F9A4: .4byte gExpPts810DD9C_Ptr\n" +"_0808F9A8: .4byte gUnknown_810DDB8\n" +"_0808F9AC: .4byte gUnknown_810DDD0\n" +"_0808F9B0: .4byte gUnknown_810DDE4\n" +"_0808F9B4: .4byte gUnknown_810DE0C\n" +"_0808F9B8: .4byte gUnknown_810DE20\n" +"_0808F9BC: .4byte gUnknown_810DE4C\n" +"_0808F9C0:\n" +" mov r0, r10\n" +" adds r0, 0x36\n" +" ldrb r0, [r0]\n" +" str r0, [r4]\n" +" ldr r0, _0808FA44\n" +" ldr r2, [r0]\n" +" str r3, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +"_0808F9D8:\n" +" movs r3, 0xA\n" +" add r9, r3\n" +" ldr r0, _0808FA48\n" +" ldr r2, [r0]\n" +" movs r5, 0\n" +" str r5, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" ldr r0, _0808FA4C\n" +" ldr r2, [r0]\n" +" ldr r4, _0808FA50\n" +" mov r0, r10\n" +" adds r0, 0x35\n" +" ldrb r3, [r0]\n" +" str r3, [r4]\n" +" mov r1, r10\n" +" adds r1, 0x3A\n" +" ldrb r0, [r1]\n" +" cmp r0, 0\n" +" beq _0808FA0E\n" +" adds r0, r3, r0\n" +" str r0, [r4]\n" +" ldr r0, _0808FA54\n" +" ldr r2, [r0]\n" +"_0808FA0E:\n" +" str r5, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" mov r1, r10\n" +" adds r1, 0x3C\n" +" ldrb r3, [r1]\n" +" cmp r3, 0\n" +" beq _0808FA5C\n" +" mov r0, r10\n" +" adds r0, 0x37\n" +" ldrb r0, [r0]\n" +" adds r1, r3, 0\n" +" adds r0, r1\n" +" str r0, [r4]\n" +" ldr r0, _0808FA58\n" +" ldr r2, [r0]\n" +" str r5, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" b _0808FA74\n" +" .align 2, 0\n" +"_0808FA44: .4byte gUnknown_810DE38\n" +"_0808FA48: .4byte gUnknown_810DDFC\n" +"_0808FA4C: .4byte gUnknown_810DE24\n" +"_0808FA50: .4byte gFormatArgs\n" +"_0808FA54: .4byte gUnknown_810DE28\n" +"_0808FA58: .4byte gUnknown_810DE54\n" +"_0808FA5C:\n" +" mov r0, r10\n" +" adds r0, 0x37\n" +" ldrb r0, [r0]\n" +" str r0, [r4]\n" +" ldr r0, _0808FA94\n" +" ldr r2, [r0]\n" +" str r3, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +"_0808FA74:\n" +" movs r0, 0xA\n" +" add r9, r0\n" +" mov r2, r10\n" +" adds r2, 0x20\n" +" ldrb r1, [r2]\n" +" movs r0, 0x1\n" +" ands r0, r1\n" +" cmp r0, 0\n" +" beq _0808FA9C\n" +" ldr r0, _0808FA98\n" +" adds r1, r2, 0\n" +" movs r2, 0\n" +" bl sub_8090E14\n" +" b _0808FAA6\n" +" .align 2, 0\n" +"_0808FA94: .4byte gUnknown_810DE50\n" +"_0808FA98: .4byte gFormatBuffer_Items\n" +"_0808FA9C:\n" +" ldr r0, _0808FB24\n" +" ldr r1, _0808FB28\n" +" ldr r1, [r1]\n" +" bl strcpy\n" +"_0808FAA6:\n" +" ldr r0, _0808FB2C\n" +" ldr r2, [r0]\n" +" movs r4, 0\n" +" str r4, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" movs r1, 0xC\n" +" add r9, r1\n" +" ldr r1, _0808FB30\n" +" mov r2, r10\n" +" movs r3, 0x3E\n" +" ldrsh r0, [r2, r3]\n" +" str r0, [r1]\n" +" movs r1, 0x3E\n" +" ldrsh r0, [r2, r1]\n" +" movs r1, 0xA\n" +" bl __divsi3\n" +" lsls r0, 16\n" +" asrs r0, 16\n" +" cmp r0, 0\n" +" bge _0808FADA\n" +" movs r0, 0\n" +"_0808FADA:\n" +" cmp r0, 0x62\n" +" ble _0808FAE0\n" +" movs r0, 0x63\n" +"_0808FAE0:\n" +" ldr r1, _0808FB34\n" +" lsls r0, 2\n" +" adds r0, r1\n" +" ldr r5, _0808FB38\n" +" ldr r1, [r0]\n" +" adds r0, r5, 0\n" +" bl strcpy\n" +" ldr r0, _0808FB3C\n" +" ldr r2, [r0]\n" +" str r4, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" movs r2, 0xA\n" +" add r9, r2\n" +" mov r0, r10\n" +" adds r0, 0x38\n" +" ldrb r4, [r0]\n" +" cmp r4, 0\n" +" beq _0808FB10\n" +" b _0808FED6\n" +"_0808FB10:\n" +" adds r0, 0x1C\n" +" ldrb r1, [r0]\n" +" adds r0, r5, 0\n" +" bl CopyTacticsNameToBuffer\n" +" ldr r0, _0808FB40\n" +" ldr r2, [r0]\n" +" str r4, [sp]\n" +" b _0808FECC\n" +" .align 2, 0\n" +"_0808FB24: .4byte gFormatBuffer_Items\n" +"_0808FB28: .4byte gUnknown_810DE58\n" +"_0808FB2C: .4byte gUnknown_810DE6C\n" +"_0808FB30: .4byte gFormatArgs\n" +"_0808FB34: .4byte gUnknown_8115718\n" +"_0808FB38: .4byte gFormatBuffer_Monsters\n" +"_0808FB3C: .4byte gUnknown_810DE80\n" +"_0808FB40: .4byte gUnknown_810DE98\n" +"_0808FB44:\n" +" lsls r0, r4, 3\n" +" adds r0, 0x10\n" +" ldr r2, _0808FBE8\n" +" movs r4, 0\n" +" str r4, [sp]\n" +" movs r1, 0\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" ldr r2, _0808FBEC\n" +" str r4, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" mov r3, r10\n" +" ldrb r0, [r3, 0x16]\n" +" bl GetFormattedTypeString\n" +" adds r2, r0, 0\n" +" str r4, [sp]\n" +" movs r0, 0x38\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" mov r1, r10\n" +" ldrb r0, [r1, 0x17]\n" +" cmp r0, 0\n" +" beq _0808FB94\n" +" bl GetFormattedTypeString\n" +" adds r2, r0, 0\n" +" str r4, [sp]\n" +" movs r0, 0x60\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +"_0808FB94:\n" +" movs r2, 0xC\n" +" add r9, r2\n" +" ldr r2, _0808FBF0\n" +" str r4, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" movs r3, 0xC\n" +" add r9, r3\n" +" mov r1, r10\n" +" ldrb r0, [r1, 0x18]\n" +" bl GetAbilityDescription\n" +" adds r2, r0, 0\n" +" str r4, [sp]\n" +" movs r5, 0xB\n" +" str r5, [sp, 0x4]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow2\n" +" movs r2, 0x21\n" +" add r9, r2\n" +" mov r3, r10\n" +" ldrb r0, [r3, 0x19]\n" +" cmp r0, 0\n" +" bne _0808FBD2\n" +" b _0808FED6\n" +"_0808FBD2:\n" +" bl GetAbilityDescription\n" +" adds r2, r0, 0\n" +" str r4, [sp]\n" +" str r5, [sp, 0x4]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow2\n" +" b _0808FED6\n" +" .align 2, 0\n" +"_0808FBE8: .4byte gUnknown_810775C\n" +"_0808FBEC: .4byte gUnknown_8107768\n" +"_0808FBF0: .4byte gUnknown_8107770\n" +"_0808FBF4:\n" +" lsls r0, r4, 3\n" +" adds r0, 0x10\n" +" ldr r1, _0808FC34\n" +" ldr r2, [r1]\n" +" movs r1, 0\n" +" str r1, [sp]\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" mov r0, r10\n" +" adds r0, 0x56\n" +" movs r1, 0\n" +" ldrsh r0, [r0, r1]\n" +" subs r5, r0, 0x1\n" +" movs r2, 0xC\n" +" negs r2, r2\n" +" add r9, r2\n" +" movs r7, 0\n" +" ldr r6, [sp, 0x2C]\n" +" adds r6, 0xC\n" +" adds r1, r6, 0\n" +" movs r2, 0\n" +" ldr r0, [sp, 0x2C]\n" +" adds r0, 0x2C\n" +"_0808FC24:\n" +" str r2, [r0]\n" +" subs r0, 0x4\n" +" cmp r0, r1\n" +" bge _0808FC24\n" +" movs r3, 0\n" +" mov r8, r3\n" +" b _0808FC88\n" +" .align 2, 0\n" +"_0808FC34: .4byte gUnknown_810DD58\n" +"_0808FC38:\n" +" mov r0, r10\n" +" adds r0, 0x58\n" +" adds r4, r0, r5\n" +" ldrb r0, [r4]\n" +" cmp r0, 0\n" +" beq _0808FC78\n" +" movs r7, 0x1\n" +" ldr r0, _0808FCA0\n" +" ldrb r1, [r4]\n" +" lsls r1, 2\n" +" adds r1, r0\n" +" ldr r0, _0808FCA4\n" +" ldr r1, [r1]\n" +" movs r2, 0x50\n" +" bl strncpy\n" +" ldr r2, _0808FCA8\n" +" movs r0, 0\n" +" str r0, [sp]\n" +" movs r0, 0xC\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" mov r0, r8\n" +" cmp r0, 0\n" +" ble _0808FC78\n" +" subs r0, 0x1\n" +" lsls r0, 2\n" +" adds r0, r6, r0\n" +" ldrb r1, [r4]\n" +" str r1, [r0]\n" +"_0808FC78:\n" +" movs r1, 0x1\n" +" add r8, r1\n" +" adds r5, 0x1\n" +" movs r2, 0xC\n" +" add r9, r2\n" +" mov r3, r8\n" +" cmp r3, 0x9\n" +" bgt _0808FC90\n" +"_0808FC88:\n" +" cmp r5, 0\n" +" blt _0808FC78\n" +" cmp r5, 0xB\n" +" ble _0808FC38\n" +"_0808FC90:\n" +" cmp r7, 0\n" +" beq _0808FC96\n" +" b _0808FED6\n" +"_0808FC96:\n" +" ldr r0, _0808FCAC\n" +" ldr r2, [r0]\n" +" str r7, [sp]\n" +" b _0808FD98\n" +" .align 2, 0\n" +"_0808FCA0: .4byte gStatusNames\n" +"_0808FCA4: .4byte gFormatBuffer_Items + 0x50\n" +"_0808FCA8: .4byte gUnknown_8107784\n" +"_0808FCAC: .4byte gUnknown_810DF78\n" +"_0808FCB0:\n" +" lsls r0, r4, 3\n" +" adds r0, 0x10\n" +" ldr r1, _0808FCF8\n" +" ldr r2, [r1]\n" +" movs r1, 0\n" +" str r1, [sp]\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" add r4, sp, 0x14\n" +" mov r0, r10\n" +" movs r2, 0x3E\n" +" ldrsh r1, [r0, r2]\n" +" adds r0, r4, 0\n" +" bl GetNumAvailableIQSkills\n" +" mov r0, r10\n" +" adds r0, 0x40\n" +" movs r3, 0\n" +" ldrsh r0, [r0, r3]\n" +" subs r7, r0, 0x1\n" +" mov r1, r9\n" +" subs r1, 0xC\n" +" movs r2, 0\n" +" ldr r0, [sp, 0x2C]\n" +" adds r0, 0x8\n" +"_0808FCE4:\n" +" strb r2, [r0]\n" +" subs r0, 0x1\n" +" ldr r3, [sp, 0x2C]\n" +" cmp r0, r3\n" +" bge _0808FCE4\n" +" mov r9, r1\n" +" movs r4, 0\n" +" mov r8, r4\n" +" b _0808FD84\n" +" .align 2, 0\n" +"_0808FCF8: .4byte gIQSkill810DD68_Ptr\n" +"_0808FCFC:\n" +" mov r5, sp\n" +" adds r5, r7\n" +" adds r5, 0x14\n" +" ldrb r0, [r5]\n" +" cmp r0, 0\n" +" beq _0808FD74\n" +" movs r4, 0x1\n" +" bl GetIQSkillName\n" +" adds r1, r0, 0\n" +" ldr r6, _0808FD3C\n" +" adds r0, r6, 0\n" +" movs r2, 0x50\n" +" bl strncpy\n" +" mov r0, r10\n" +" adds r0, 0x50\n" +" adds r1, r4, 0\n" +" ldrb r5, [r5]\n" +" lsls r1, r5\n" +" bl IsIQSkillSet\n" +" lsls r0, 24\n" +" cmp r0, 0\n" +" beq _0808FD44\n" +" adds r0, r6, 0\n" +" subs r0, 0x50\n" +" ldr r1, _0808FD40\n" +" bl strcpy\n" +" b _0808FD4E\n" +" .align 2, 0\n" +"_0808FD3C: .4byte gFormatBuffer_Items + 0x50\n" +"_0808FD40: .4byte gUnknown_8107788\n" +"_0808FD44:\n" +" adds r0, r6, 0\n" +" subs r0, 0x50\n" +" ldr r1, _0808FDA4\n" +" bl strcpy\n" +"_0808FD4E:\n" +" mov r0, r8\n" +" cmp r0, 0\n" +" ble _0808FD64\n" +" subs r0, 0x1\n" +" ldr r1, [sp, 0x2C]\n" +" adds r0, r1, r0\n" +" mov r1, sp\n" +" adds r1, r7\n" +" adds r1, 0x14\n" +" ldrb r1, [r1]\n" +" strb r1, [r0]\n" +"_0808FD64:\n" +" ldr r2, _0808FDA8\n" +" movs r0, 0\n" +" str r0, [sp]\n" +" movs r0, 0xC\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +"_0808FD74:\n" +" movs r2, 0x1\n" +" add r8, r2\n" +" adds r7, 0x1\n" +" movs r3, 0xC\n" +" add r9, r3\n" +" mov r0, r8\n" +" cmp r0, 0x9\n" +" bgt _0808FD8C\n" +"_0808FD84:\n" +" cmp r7, 0\n" +" blt _0808FD74\n" +" cmp r7, 0x17\n" +" ble _0808FCFC\n" +"_0808FD8C:\n" +" cmp r4, 0\n" +" beq _0808FD92\n" +" b _0808FED6\n" +"_0808FD92:\n" +" ldr r0, _0808FDAC\n" +" ldr r2, [r0]\n" +" str r4, [sp]\n" +"_0808FD98:\n" +" movs r0, 0xC\n" +" movs r1, 0x20\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" b _0808FED6\n" +" .align 2, 0\n" +"_0808FDA4: .4byte gUnknown_810778C\n" +"_0808FDA8: .4byte gUnknown_8107790\n" +"_0808FDAC: .4byte gUnknown_810DF84\n" +"_0808FDB0:\n" +" lsls r0, r4, 3\n" +" adds r0, 0x10\n" +" ldr r2, _0808FEEC\n" +" movs r5, 0\n" +" str r5, [sp]\n" +" movs r1, 0\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" ldr r6, _0808FEF0\n" +" mov r2, r10\n" +" movs r3, 0\n" +" ldrsh r1, [r2, r3]\n" +" adds r0, r6, 0\n" +" bl CopyMonsterNameToBuffer\n" +" ldr r1, _0808FEF4\n" +" mov r2, r10\n" +" movs r3, 0\n" +" ldrsh r0, [r2, r3]\n" +" str r0, [r1]\n" +" ldr r0, _0808FEF8\n" +" ldr r2, [r0]\n" +" str r5, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" movs r0, 0xA\n" +" add r9, r0\n" +" mov r1, r10\n" +" movs r2, 0\n" +" ldrsh r0, [r1, r2]\n" +" bl GetFriendArea\n" +" lsls r0, 24\n" +" lsrs r0, 24\n" +" bl GetFriendAreaName\n" +" adds r1, r0, 0\n" +" ldr r4, _0808FEFC\n" +" adds r0, r4, 0\n" +" movs r2, 0x50\n" +" bl strncpy\n" +" ldr r0, _0808FF00\n" +" ldr r2, [r0]\n" +" str r5, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" movs r3, 0xA\n" +" add r9, r3\n" +" ldr r0, _0808FF04\n" +" ldr r2, [r0]\n" +" str r5, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" movs r0, 0xD\n" +" add r9, r0\n" +" ldr r0, _0808FF08\n" +" ldr r2, [r0]\n" +" str r5, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" movs r1, 0xA\n" +" add r9, r1\n" +" mov r1, r10\n" +" adds r1, 0x1C\n" +" adds r0, r4, 0\n" +" bl PrintYellowDungeonNametoBuffer\n" +" ldr r0, _0808FF0C\n" +" ldr r2, [r0]\n" +" str r5, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" movs r2, 0xD\n" +" add r9, r2\n" +" mov r3, r10\n" +" movs r1, 0\n" +" ldrsh r0, [r3, r1]\n" +" bl GetCategoryString\n" +" adds r1, r0, 0\n" +" adds r0, r6, 0\n" +" movs r2, 0x14\n" +" bl strncpy\n" +" ldr r0, _0808FF10\n" +" ldr r2, [r0]\n" +" str r5, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" movs r2, 0xD\n" +" add r9, r2\n" +" ldr r4, _0808FF14\n" +" mov r3, r10\n" +" movs r1, 0\n" +" ldrsh r0, [r3, r1]\n" +" bl GetBodySize\n" +" lsls r0, 24\n" +" lsrs r0, 22\n" +" adds r0, r4\n" +" ldr r1, [r0]\n" +" adds r0, r6, 0\n" +" bl strcpy\n" +" ldr r0, _0808FF18\n" +" ldr r2, [r0]\n" +" str r5, [sp]\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +" movs r2, 0xD\n" +" add r9, r2\n" +" ldr r1, _0808FF1C\n" +" mov r0, r10\n" +" adds r0, 0x4C\n" +" ldrb r0, [r0]\n" +" lsls r0, 2\n" +" adds r0, r1\n" +" ldr r2, [r0]\n" +" str r5, [sp]\n" +"_0808FECC:\n" +" movs r0, 0x4\n" +" mov r1, r9\n" +" ldr r3, [sp, 0x50]\n" +" bl PrintFormattedStringOnWindow\n" +"_0808FED6:\n" +" ldr r0, [sp, 0x50]\n" +" bl sub_80073E0\n" +" add sp, 0x30\n" +" pop {r3-r5}\n" +" mov r8, r3\n" +" mov r9, r4\n" +" mov r10, r5\n" +" pop {r4-r7}\n" +" pop {r0}\n" +" bx r0\n" +" .align 2, 0\n" +"_0808FEEC: .4byte gUnknown_8107798\n" +"_0808FEF0: .4byte gFormatBuffer_Monsters\n" +"_0808FEF4: .4byte gFormatArgs\n" +"_0808FEF8: .4byte gUnknown_810DEB4\n" +"_0808FEFC: .4byte gFormatBuffer_Items\n" +"_0808FF00: .4byte gUnknown_810DEC8\n" +"_0808FF04: .4byte gUnknown_810DEDC\n" +"_0808FF08: .4byte gUnknown_810DFB4\n" +"_0808FF0C: .4byte gUnknown_810DFC8\n" +"_0808FF10: .4byte gUnknown_810DEF4\n" +"_0808FF14: .4byte gUnknown_810E02C\n" +"_0808FF18: .4byte gUnknown_810DF98\n" +"_0808FF1C: .4byte gEvolutionStrings"); +} + +void sub_808FF20(struct unkStruct_808FF20 *param_1, struct PokemonStruct1 *pokemon, bool8 param_3) +{ + s32 index; + + PrintColoredPokeNameToBuffer(param_1->nameBuffer, pokemon, COLOR_WHITE); + param_1->species = pokemon->speciesNum; + param_1->HP1 = pokemon->pokeHP; + param_1->HP2 = pokemon->pokeHP; + param_1->level = pokemon->level; + param_1->exp = pokemon->currExp; + for(index = 0; index < 2; index++) + { + param_1->offense.att[index] = pokemon->offense.att[index]; + param_1->offense.def[index] = pokemon->offense.def[index]; + param_1->types[index] = GetPokemonType(pokemon->speciesNum,index); + param_1->abilities[index] = GetPokemonAbility(pokemon->speciesNum,index); + } + param_1->isTeamLeader = pokemon->isTeamLeader; + param_1->atkBoost = 0; + param_1->spAtkBoost = 0; + param_1->defBoost = 0; + param_1->spDefBoost = 0; + + if (pokemon->heldItem.id != 0) { + if (pokemon->heldItem.id == ITEM_POWER_BAND) { + param_1->atkBoost += gUnknown_810AC60; + } + if (pokemon->heldItem.id == ITEM_SPECIAL_BAND) { + param_1->spAtkBoost+= gUnknown_810AC62; + } + if (pokemon->heldItem.id == ITEM_MUNCH_BELT) { + param_1->atkBoost += gUnknown_810AC68; + } + if (pokemon->heldItem.id == ITEM_MUNCH_BELT) { + param_1->spAtkBoost+= gUnknown_810AC68; + } + if (pokemon->heldItem.id == ITEM_DEF_SCARF) { + param_1->defBoost += gUnknown_810AC64; + } + if (pokemon->heldItem.id == ITEM_ZINC_BAND) { + param_1->spDefBoost += gUnknown_810AC66; + } + } + param_1->tactic = pokemon->tacticIndex; + HeldItemToSlot(¶m_1->item,&pokemon->heldItem); + param_1->IQ = pokemon->IQ; + param_1->dungeonLocation = pokemon->dungeonLocation; + param_1->unk44[0] = pokemon->unkC[0]; + param_1->unk44[1] = pokemon->unkC[1]; + param_1->IQSkills = pokemon->IQSkills; + if (param_3) { + param_1->unk4C = sub_808F700(pokemon); + } + else { + param_1->unk4C = 3; + } + + for(index = 0; index < 0xC; index++) + { + param_1->unk58[index] = 0; + } +}