From d3a09dc75be73f3bc9086dc0212cb8e3a3d494e1 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Wed, 31 Jan 2024 21:37:57 -0800 Subject: [PATCH 01/14] Matched thanks to @Kermalis --- asm/code_809A560.s | 59 ---------------------------------------------- src/code_809A560.c | 57 +++++++++++++++++++++++--------------------- 2 files changed, 30 insertions(+), 86 deletions(-) diff --git a/asm/code_809A560.s b/asm/code_809A560.s index db92d1d42..35180f408 100644 --- a/asm/code_809A560.s +++ b/asm/code_809A560.s @@ -5,65 +5,6 @@ .text - thumb_func_start sub_809A83C -sub_809A83C: - push {r4-r7,lr} - lsls r0, 16 - asrs r0, 16 - ldr r2, _0809A8A0 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r3, _0809A8A4 - adds r1, r3 - ldr r2, [r2] - adds r6, r2, r1 - ldr r1, _0809A8A8 - strh r1, [r6] - movs r2, 0 - movs r7, 0 - strh r7, [r6, 0x2] - strb r2, [r6, 0x4] - strb r2, [r6, 0x5] - movs r1, 0xFF - strb r1, [r6, 0x6] - strb r2, [r6, 0x7] - str r7, [r6, 0x8] - str r7, [r6, 0xC] - str r7, [r6, 0x10] - str r7, [r6, 0x14] - strb r2, [r6, 0x1C] - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 4 - ldr r0, _0809A8AC - adds r0, r4, r0 - ldr r5, _0809A8B0 - adds r1, r5, 0 - bl strcpy - ldr r0, _0809A8B4 - adds r4, r0 - adds r0, r4, 0 - adds r1, r5, 0 - bl strcpy - ldr r0, [r6, 0x20] - cmp r0, 0 - beq _0809A89A - bl CloseFile - str r7, [r6, 0x20] -_0809A89A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809A8A0: .4byte gUnknown_3001B64 -_0809A8A4: .4byte 0x0000043c -_0809A8A8: .4byte 0x0000ffff -_0809A8AC: .4byte gAvailablePokemonNames -_0809A8B0: .4byte gInvalidityText -_0809A8B4: .4byte gPlayerName - thumb_func_end sub_809A83C - thumb_func_start sub_809A8B8 sub_809A8B8: push {r4-r7,lr} diff --git a/src/code_809A560.c b/src/code_809A560.c index 90ae02752..23790e1f6 100644 --- a/src/code_809A560.c +++ b/src/code_809A560.c @@ -15,7 +15,7 @@ struct unkStruct_3001B64_sub u32 unk8; u32 unkC; u32 unk10; - /* 0x14 */ u32 faceData; + /* 0x14 */ u8 *faceData; u32 fill18; u8 unk1C; u8 fill1D[0x20 - 0x1D]; @@ -237,29 +237,32 @@ void sub_809A7EC(void) } } -// https://decomp.me/scratch/4MpWc (96.23% matching - Seth) -// void sub_809A83C(s16 index) -// { -// struct unkStruct_3001B64_sub *temp; -// -// temp = &gUnknown_3001B64->unk43C[index]; -// -// temp->unk0 = -1; -// temp->speciesID = MONSTER_NONE; -// temp->unk4 = 0; -// temp->unk5 = 0; -// temp->unk6 = -1; -// temp->unk7 = 0; -// temp->unk8 = 0; -// temp->unkC = 0; -// temp->unk10 = 0; -// temp->faceData = NULL; -// temp->unk1C = 0; -// strcpy(gAvailablePokemonNames + (index * 0x50), gInvalidityText); -// strcpy(gPlayerName + (index * 0x50), gInvalidityText); -// if(temp->faceFile) -// { -// CloseFile(temp->faceFile); -// temp->faceFile = NULL; -// } -// } +static inline struct unkStruct_3001B64_sub *LOL(s16 p, struct unkStruct_3001B64 **thing) { + return &thing[0]->unk43C[p]; +} + +void sub_809A83C(s16 param_1) +{ + struct unkStruct_3001B64_sub *temp; + + temp = LOL(param_1, &gUnknown_3001B64); + + temp->unk0 = -1; + temp->speciesID = 0; + temp->unk4 = 0; + temp->unk5 = 0; + temp->unk6 = -1; + temp->unk7 = 0; + temp->unk8 = 0; + temp->unkC = 0; + temp->unk10 = 0; + temp->faceData = NULL; + temp->unk1C = 0; + strcpy(gAvailablePokemonNames + (param_1 * 0x50), gInvalidityText); + strcpy(gPlayerName + (param_1 * 0x50), gInvalidityText); + if(temp->faceFile) + { + CloseFile(temp->faceFile); + temp->faceFile = NULL; + } +} From 42366265a8bf23de0568cde095a347a973d31db8 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 12 Feb 2024 14:56:52 -0800 Subject: [PATCH 02/14] more trap decomp --- asm/code_807FCD4.s | 4583 ------------------------------ asm/code_8080CF0.s | 3369 ++++++++++++++++++++++ include/structs/dungeon_entity.h | 2 +- include/structs/str_dungeon.h | 10 +- ld_script.txt | 2 + src/dungeon_util.c | 14 +- src/trap.c | 190 +- src/trap_1.c | 447 +++ 8 files changed, 4019 insertions(+), 4598 deletions(-) create mode 100644 asm/code_8080CF0.s create mode 100644 src/trap_1.c diff --git a/asm/code_807FCD4.s b/asm/code_807FCD4.s index d8d4d16e0..771bd1d6c 100644 --- a/asm/code_807FCD4.s +++ b/asm/code_807FCD4.s @@ -5,116 +5,6 @@ .text - thumb_func_start HandleSummonTrap -HandleSummonTrap: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - str r0, [sp, 0x14] - adds r7, r1, 0 - movs r0, 0x3 - bl DungeonRandInt - adds r6, r0, 0 - adds r4, r6, 0x2 - movs r0, 0x8 - bl DungeonRandInt - adds r5, r0, 0 - bl IsBossFight - lsls r0, 24 - cmp r0, 0 - bne _080806CA - movs r0, 0 - mov r8, r0 - cmp r8, r4 - bge _080806BA - mov r4, sp - movs r1, 0 - mov r10, r1 - movs r2, 0 - mov r9, r2 - adds r6, 0x2 -_08080660: - movs r0, 0 - bl sub_803D970 - movs r1, 0x7 - ands r5, r1 - strh r0, [r4] - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0 - bl sub_806AA0C - lsls r0, 24 - cmp r0, 0 - beq _080806B2 - mov r2, r9 - strh r2, [r4, 0x8] - mov r0, r10 - strb r0, [r4, 0x2] - ldr r0, _080806D8 - lsls r1, r5, 2 - adds r1, r0 - ldrh r0, [r1] - ldrh r2, [r7] - adds r0, r2 - strh r0, [r4, 0xC] - ldrh r0, [r1, 0x2] - ldrh r1, [r7, 0x2] - adds r0, r1 - strh r0, [r4, 0xE] - mov r2, r9 - str r2, [sp, 0x4] - mov r0, r10 - strb r0, [r4, 0x10] - mov r0, sp - movs r1, 0x1 - bl sub_806B7F8 - cmp r0, 0 - beq _080806B2 - movs r1, 0x1 - add r8, r1 -_080806B2: - adds r5, 0x1 - subs r6, 0x1 - cmp r6, 0 - bne _08080660 -_080806BA: - movs r1, 0xCA - lsls r1, 1 - adds r0, r7, 0 - bl sub_80421EC - mov r2, r8 - cmp r2, 0 - bne _080806E0 -_080806CA: - ldr r0, _080806DC - ldr r1, [r0] - ldr r0, [sp, 0x14] - bl SendMessage - b _080806EA - .align 2, 0 -_080806D8: .4byte gAdjacentTileOffsets -_080806DC: .4byte gUnknown_80FED04 -_080806E0: - ldr r0, _080806FC - ldr r1, [r0] - ldr r0, [sp, 0x14] - bl SendMessage -_080806EA: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080806FC: .4byte gUnknown_80FED00 - thumb_func_end HandleSummonTrap - thumb_func_start HandlePPZeroTrap HandlePPZeroTrap: push {r4-r7,lr} @@ -558,4477 +448,4 @@ _08080A46: _08080A58: .4byte gUnknown_80FDAE4 thumb_func_end HandlePokemonTrap - thumb_func_start HandleTripTrap -HandleTripTrap: - push {r4-r7,lr} - sub sp, 0xC - adds r7, r0, 0 - adds r4, r1, 0 - cmp r4, 0 - beq _08080AEC - adds r0, r4, 0 - movs r1, 0x6 - movs r2, 0x8 - bl sub_806CDD4 - movs r0, 0x10 - movs r1, 0x55 - bl sub_803E708 - adds r0, r4, 0 - movs r1, 0x8 - bl sub_806CE68 - ldr r5, [r4, 0x70] - adds r2, r5, 0 - adds r2, 0x60 - ldrb r1, [r2] - movs r6, 0x1 - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _08080AEC - ldr r0, [r5, 0x60] - str r0, [sp, 0x8] - movs r0, 0 - strb r0, [r2] - bl FillInventoryGaps - movs r1, 0xC8 - lsls r1, 1 - adds r0, r4, 0 - bl sub_80421C0 - adds r0, r5, 0 - adds r0, 0x46 - ldrb r0, [r0] - movs r2, 0x7 - ands r2, r0 - ldr r0, _08080AF4 - lsls r2, 2 - adds r2, r0 - ldrh r0, [r2] - ldrh r1, [r4, 0x4] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - ldr r3, _08080AF8 - ldr r1, [sp, 0x4] - ands r1, r3 - orrs r1, r0 - str r1, [sp, 0x4] - ldrh r0, [r2, 0x2] - ldrh r2, [r4, 0x6] - adds r0, r2 - lsls r0, 16 - ldr r2, _08080AFC - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0x4] - adds r1, r4, 0x4 - add r3, sp, 0x8 - str r6, [sp] - adds r0, r7, 0 - add r2, sp, 0x4 - bl sub_804687C -_08080AEC: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08080AF4: .4byte gAdjacentTileOffsets -_08080AF8: .4byte 0xffff0000 -_08080AFC: .4byte 0x0000ffff - thumb_func_end HandleTripTrap - - thumb_func_start sub_8080B00 -sub_8080B00: - push {r4,r5,lr} - lsls r1, 24 - lsrs r5, r1, 24 - ldr r4, [r0, 0x14] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08080B2A - adds r0, r4, 0 - bl GetEntityType - cmp r0, 0x2 - bne _08080B26 - adds r0, r4, 0 - bl GetTrapData - strb r5, [r0] -_08080B26: - bl sub_8049ED4 -_08080B2A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8080B00 - - thumb_func_start sub_8080B30 -sub_8080B30: - push {lr} - sub sp, 0x10 - adds r3, r0, 0 - adds r2, r1, 0 - mov r0, sp - adds r1, r3, 0 - bl sub_8082F9C - movs r0, 0 - str r0, [sp, 0xC] - add r1, sp, 0xC - mov r0, sp - movs r2, 0x4 - bl sub_8082FA8 - mov r0, sp - bl sub_8080B90 - mov r0, sp - bl sub_8081454 - mov r0, sp - bl sub_808165C - mov r0, sp - bl sub_808173C - mov r0, sp - bl sub_8080BBC - mov r0, sp - bl sub_8080C44 - mov r0, sp - bl sub_8080CF0 - ldr r1, _08080B8C - mov r0, sp - bl sub_808300C - mov r0, sp - bl nullsub_98 - add sp, 0x10 - pop {r0} - bx r0 - .align 2, 0 -_08080B8C: .4byte gUnknown_81071D4 - thumb_func_end sub_8080B30 - - thumb_func_start sub_8080B90 -sub_8080B90: - push {r4,lr} - adds r4, r0, 0 - ldr r1, _08080BB0 - bl sub_808300C - ldr r0, _08080BB4 - ldr r1, [r0] - ldr r0, _08080BB8 - adds r1, r0 - adds r0, r4, 0 - movs r2, 0x58 - bl sub_8082FA8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08080BB0: .4byte gUnknown_81071E0 -_08080BB4: .4byte gDungeon -_08080BB8: .4byte 0x00000644 - thumb_func_end sub_8080B90 - - thumb_func_start sub_8080BBC -sub_8080BBC: - push {r4-r7,lr} - sub sp, 0x8 - adds r6, r0, 0 - ldr r1, _08080C38 - movs r2, 0 - add r0, sp, 0x4 -_08080BC8: - strb r2, [r0] - subs r0, 0x1 - cmp r0, sp - bge _08080BC8 - adds r0, r6, 0 - bl sub_808300C - movs r7, 0 -_08080BD8: - ldr r0, _08080C3C - ldr r0, [r0] - lsls r1, r7, 2 - ldr r2, _08080C40 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - movs r5, 0 - cmp r4, 0 - beq _08080C1A - adds r0, r4, 0 - bl GetEntityType - cmp r0, 0x3 - bne _08080C1A - adds r0, r4, 0 - bl GetItemData - adds r1, r0, 0 - adds r0, r6, 0 - bl sub_8081788 - adds r1, r4, 0x4 - adds r0, r6, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r1, r4, 0x6 - adds r0, r6, 0 - movs r2, 0x1 - bl sub_8082FA8 - movs r5, 0x1 -_08080C1A: - cmp r5, 0 - bne _08080C28 - adds r0, r6, 0 - mov r1, sp - movs r2, 0x5 - bl sub_8082FA8 -_08080C28: - adds r7, 0x1 - cmp r7, 0x3F - ble _08080BD8 - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08080C38: .4byte gUnknown_81071E0 -_08080C3C: .4byte gDungeon -_08080C40: .4byte 0x0001361c - thumb_func_end sub_8080BBC - - thumb_func_start sub_8080C44 -sub_8080C44: - push {r4-r7,lr} - sub sp, 0x8 - adds r6, r0, 0 - movs r7, 0 - ldr r3, _08080CE4 - movs r2, 0xFF -_08080C50: - mov r0, sp - adds r1, r0, r7 - ldrb r0, [r1] - orrs r0, r2 - strb r0, [r1] - adds r7, 0x1 - cmp r7, 0x4 - ble _08080C50 - adds r0, r6, 0 - adds r1, r3, 0 - bl sub_808300C - movs r7, 0 -_08080C6A: - ldr r0, _08080CE8 - ldr r0, [r0] - lsls r1, r7, 2 - ldr r2, _08080CEC - adds r0, r2 - adds r0, r1 - ldr r5, [r0] - movs r4, 0 - cmp r5, 0 - beq _08080CC8 - adds r0, r5, 0 - bl GetEntityType - cmp r0, 0x2 - bne _08080CC8 - adds r0, r5, 0 - bl GetTrapData - adds r4, r0, 0 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r4, 0x1 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r1, r5, 0 - adds r1, 0x20 - adds r0, r6, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r1, r5, 0x4 - adds r0, r6, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r1, r5, 0x6 - adds r0, r6, 0 - movs r2, 0x1 - bl sub_8082FA8 - movs r4, 0x1 -_08080CC8: - cmp r4, 0 - bne _08080CD6 - adds r0, r6, 0 - mov r1, sp - movs r2, 0x5 - bl sub_8082FA8 -_08080CD6: - adds r7, 0x1 - cmp r7, 0x3F - ble _08080C6A - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08080CE4: .4byte gUnknown_81071E0 -_08080CE8: .4byte gDungeon -_08080CEC: .4byte 0x0001371c - thumb_func_end sub_8080C44 - - thumb_func_start sub_8080CF0 -sub_8080CF0: - push {r4-r6,lr} - adds r6, r0, 0 - ldr r1, _08080DD4 - bl sub_808300C - ldr r4, _08080DD8 - ldr r0, [r4] - ldr r1, _08080DDC - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl sub_8083078 - ldr r0, [r4] - ldr r2, _08080DE0 - adds r0, r2 - ldr r1, [r0] - adds r0, r6, 0 - bl sub_8083078 - ldr r0, [r4] - ldr r1, _08080DE4 - adds r0, r1 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r2, _08080DE8 - adds r0, r2 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r1, _08080DEC - adds r0, r1 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r2, _08080DF0 - adds r0, r2 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r1, _08080DF4 - adds r0, r1 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r2, _08080DF8 - adds r0, r2 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r1, _08080DFC - adds r0, r1 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r2, _08080E00 - adds r0, r2 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_80830B4 - ldr r0, [r4] - movs r1, 0xE0 - lsls r1, 6 - adds r0, r1 - ldrh r1, [r0] - adds r0, r6, 0 - bl sub_8083030 - movs r5, 0 -_08080D9A: - ldr r0, [r4] - lsls r1, r5, 2 - ldr r2, _08080E04 - adds r0, r2 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl sub_8080E0C - adds r5, 0x1 - cmp r5, 0x3 - ble _08080D9A - movs r5, 0 - ldr r4, _08080DD8 -_08080DB6: - ldr r0, [r4] - lsls r1, r5, 2 - ldr r2, _08080E08 - adds r0, r2 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl sub_8080E0C - adds r5, 0x1 - cmp r5, 0xF - ble _08080DB6 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08080DD4: .4byte gUnknown_81071E0 -_08080DD8: .4byte gDungeon -_08080DDC: .4byte 0x000037f0 -_08080DE0: .4byte 0x000037f4 -_08080DE4: .4byte 0x000037f8 -_08080DE8: .4byte 0x000037f9 -_08080DEC: .4byte 0x000037fa -_08080DF0: .4byte 0x000037fb -_08080DF4: .4byte 0x000037fc -_08080DF8: .4byte 0x000037fd -_08080DFC: .4byte 0x000037fe -_08080E00: .4byte 0x000037ff -_08080E04: .4byte 0x0001357c -_08080E08: .4byte 0x0001358c - thumb_func_end sub_8080CF0 - - thumb_func_start sub_8080E0C -sub_8080E0C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, _08080E88 - add sp, r4 - adds r5, r0, 0 - adds r4, r1, 0 - movs r1, 0 - add r0, sp, 0x20C - str r1, [r0] - movs r1, 0x1 - movs r6, 0x82 - lsls r6, 2 - mov r2, sp - adds r0, r2, r6 - str r1, [r0] - adds r0, r5, 0 - movs r1, 0xAA - bl sub_8083060 - adds r0, r5, 0 - movs r1, 0x55 - bl sub_8083060 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08080E8C - ldr r6, [r4, 0x70] - add r1, sp, 0x208 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r1, r4, 0x4 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r1, r4, 0x6 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r1, r4, 0 - adds r1, 0x20 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r1, r4, 0 - adds r1, 0x26 - adds r0, r5, 0 - movs r2, 0x2 - bl sub_8082FA8 - b _08080ECC - .align 2, 0 -_08080E88: .4byte 0xfffffd6c -_08080E8C: - mov r0, sp - movs r1, 0 - adds r2, r6, 0 - bl memset - mov r6, sp - add r4, sp, 0x20C - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x2 - bl sub_8082FA8 -_08080ECC: - ldrh r1, [r6] - adds r0, r5, 0 - bl sub_8083030 - movs r0, 0x4 - ldrsh r1, [r6, r0] - adds r0, r5, 0 - bl sub_80817F4 - movs r2, 0x2 - ldrsh r1, [r6, r2] - adds r0, r5, 0 - bl sub_80817F4 - ldrb r1, [r6, 0x6] - adds r0, r5, 0 - bl sub_80830B4 - ldrb r1, [r6, 0x7] - adds r0, r5, 0 - bl sub_80830B4 - ldrb r1, [r6, 0x8] - adds r0, r5, 0 - bl sub_8083060 - ldrb r1, [r6, 0x9] - adds r0, r5, 0 - bl sub_8083060 - ldrb r1, [r6, 0xA] - adds r0, r5, 0 - bl sub_8083060 - adds r1, r6, 0 - adds r1, 0x40 - adds r0, r5, 0 - bl sub_80818C8 - movs r0, 0xC - ldrsh r1, [r6, r0] - adds r0, r5, 0 - bl sub_8083048 - movs r2, 0xE - ldrsh r1, [r6, r2] - adds r0, r5, 0 - bl sub_8083048 - movs r0, 0x10 - ldrsh r1, [r6, r0] - adds r0, r5, 0 - bl sub_8083048 - movs r2, 0x12 - ldrsh r1, [r6, r2] - adds r0, r5, 0 - bl sub_8083048 - ldrb r1, [r6, 0x14] - adds r0, r5, 0 - bl sub_8083060 - ldrb r1, [r6, 0x15] - adds r0, r5, 0 - bl sub_8083060 - ldrb r1, [r6, 0x16] - adds r0, r5, 0 - bl sub_8083060 - ldrb r1, [r6, 0x17] - adds r0, r5, 0 - bl sub_8083060 - ldr r1, [r6, 0x18] - adds r0, r5, 0 - bl sub_8083078 - movs r0, 0x1C - ldrsh r1, [r6, r0] - adds r0, r5, 0 - bl sub_8083048 - movs r2, 0x1E - ldrsh r1, [r6, r2] - adds r0, r5, 0 - bl sub_8083048 - movs r0, 0x20 - ldrsh r1, [r6, r0] - adds r0, r5, 0 - bl sub_8083048 - movs r2, 0x22 - ldrsh r1, [r6, r2] - adds r0, r5, 0 - bl sub_8083048 - movs r0, 0x24 - ldrsh r1, [r6, r0] - adds r0, r5, 0 - bl sub_8083048 - movs r2, 0x26 - ldrsh r1, [r6, r2] - adds r0, r5, 0 - bl sub_8083048 - movs r0, 0x28 - ldrsh r1, [r6, r0] - adds r0, r5, 0 - bl sub_8083048 - ldr r1, [r6, 0x2C] - adds r0, r5, 0 - bl sub_80830A0 - ldr r1, [r6, 0x30] - adds r0, r5, 0 - bl sub_80830A0 - ldr r1, [r6, 0x34] - adds r0, r5, 0 - bl sub_80830A0 - ldr r1, [r6, 0x38] - adds r0, r5, 0 - bl sub_80830A0 - adds r1, r6, 0 - adds r1, 0x44 - adds r0, r5, 0 - bl sub_80817C8 - adds r0, r6, 0 - adds r0, 0x5C - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_808180C - adds r0, r6, 0 - adds r0, 0x5D - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_808180C - adds r0, r6, 0 - adds r0, 0x5E - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8081824 - adds r0, r6, 0 - adds r0, 0x5F - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8081824 - adds r1, r6, 0 - adds r1, 0x60 - adds r0, r5, 0 - bl sub_8081788 - adds r0, r6, 0 - adds r0, 0x64 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80817B0 - movs r1, 0x78 - adds r1, r6 - mov r8, r1 - movs r2, 0x8C - adds r2, r6 - mov r9, r2 - movs r0, 0x90 - adds r0, r6 - mov r10, r0 - adds r1, r6, 0 - adds r1, 0x94 - str r1, [sp, 0x214] - adds r2, r6, 0 - adds r2, 0x3C - str r2, [sp, 0x210] - adds r0, r6, 0 - adds r0, 0x98 - str r0, [sp, 0x218] - adds r1, 0x8 - str r1, [sp, 0x21C] - adds r2, 0x64 - str r2, [sp, 0x220] - adds r0, 0x10 - str r0, [sp, 0x228] - adds r1, 0x10 - str r1, [sp, 0x22C] - adds r2, 0x10 - str r2, [sp, 0x230] - adds r0, 0x14 - str r0, [sp, 0x234] - adds r1, 0x14 - str r1, [sp, 0x238] - adds r2, 0x14 - str r2, [sp, 0x23C] - adds r0, 0xC - str r0, [sp, 0x240] - adds r1, 0x10 - str r1, [sp, 0x244] - adds r2, 0x18 - str r2, [sp, 0x248] - adds r0, 0x18 - str r0, [sp, 0x24C] - adds r1, 0x14 - str r1, [sp, 0x250] - adds r2, 0xC - str r2, [sp, 0x254] - adds r0, 0xC - str r0, [sp, 0x258] - adds r1, 0xC - str r1, [sp, 0x25C] - adds r2, 0x9 - str r2, [sp, 0x260] - adds r0, 0x6 - str r0, [sp, 0x264] - adds r1, 0x3 - str r1, [sp, 0x268] - adds r2, 0x3 - str r2, [sp, 0x26C] - adds r0, 0x9 - str r0, [sp, 0x280] - adds r1, 0x2 - str r1, [sp, 0x270] - adds r2, 0x2 - str r2, [sp, 0x274] - subs r0, 0x4 - str r0, [sp, 0x278] - adds r1, 0x5 - str r1, [sp, 0x27C] - adds r2, 0x6 - str r2, [sp, 0x284] - adds r0, 0x6 - str r0, [sp, 0x288] - adds r1, 0x4 - str r1, [sp, 0x28C] - adds r2, 0x3 - str r2, [sp, 0x290] - subs r0, 0x59 - str r0, [sp, 0x224] - adds r4, r6, 0 - adds r4, 0x68 - movs r7, 0x3 -_080810C2: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80830D8 - adds r4, 0x4 - subs r7, 0x1 - cmp r7, 0 - bge _080810C2 - adds r0, r5, 0 - mov r1, r8 - bl sub_80818E4 - adds r0, r5, 0 - mov r1, r9 - bl sub_8081B54 - adds r0, r5, 0 - mov r1, r10 - bl sub_8081B54 - ldr r2, [sp, 0x214] - ldrb r1, [r2] - adds r0, r5, 0 - bl sub_8081880 - adds r0, r5, 0 - ldr r1, [sp, 0x210] - bl sub_8081898 - ldr r0, [sp, 0x218] - ldr r1, [r0] - adds r0, r5, 0 - bl sub_8083078 - ldr r2, [sp, 0x21C] - ldr r1, [r2] - adds r0, r5, 0 - bl sub_8083078 - ldr r0, [sp, 0x220] - ldr r1, [r0] - adds r0, r5, 0 - bl sub_8083078 - adds r0, r5, 0 - ldr r1, [sp, 0x228] - bl sub_8081920 - adds r0, r5, 0 - ldr r1, [sp, 0x22C] - bl sub_808193C - adds r0, r5, 0 - ldr r1, [sp, 0x230] - bl sub_8081968 - adds r0, r5, 0 - ldr r1, [sp, 0x234] - bl sub_8081994 - adds r0, r5, 0 - ldr r1, [sp, 0x238] - bl sub_80819B0 - adds r0, r5, 0 - ldr r1, [sp, 0x23C] - bl sub_80819D4 - adds r0, r5, 0 - ldr r1, [sp, 0x240] - bl sub_80819F0 - adds r0, r5, 0 - ldr r1, [sp, 0x244] - bl sub_8081A24 - adds r0, r5, 0 - ldr r1, [sp, 0x248] - bl sub_8081A58 - adds r0, r5, 0 - ldr r1, [sp, 0x24C] - bl sub_8081A74 - adds r0, r5, 0 - ldr r1, [sp, 0x250] - bl sub_8081A80 - adds r0, r5, 0 - ldr r1, [sp, 0x254] - bl sub_8081A9C - adds r0, r5, 0 - ldr r1, [sp, 0x258] - bl sub_8081AB8 - ldr r2, [sp, 0x25C] - ldrb r1, [r2] - adds r0, r5, 0 - bl sub_80830B4 - ldr r0, [sp, 0x260] - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - ldr r2, [sp, 0x264] - ldrb r1, [r2] - adds r0, r5, 0 - bl sub_80830B4 - ldr r0, [sp, 0x268] - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - ldr r2, [sp, 0x26C] - ldrb r1, [r2] - adds r0, r5, 0 - bl sub_80830B4 - ldr r0, [sp, 0x280] - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8083060 - ldr r2, [sp, 0x270] - ldrb r1, [r2] - adds r0, r5, 0 - bl sub_80830B4 - ldr r0, [sp, 0x274] - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - ldr r2, [sp, 0x278] - ldrb r1, [r2] - adds r0, r5, 0 - bl sub_80830B4 - ldr r0, [sp, 0x27C] - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8083060 - ldr r2, [sp, 0x284] - ldrb r1, [r2] - adds r0, r5, 0 - bl sub_80830B4 - ldr r0, [sp, 0x288] - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8083060 - ldr r2, [sp, 0x28C] - ldrb r1, [r2] - adds r0, r5, 0 - bl sub_8083060 - ldr r0, [sp, 0x290] - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_808183C - movs r1, 0x80 - lsls r1, 1 - adds r0, r6, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8081854 - movs r2, 0x82 - lsls r2, 1 - adds r0, r6, r2 - ldr r1, [r0] - adds r0, r5, 0 - bl sub_808186C - movs r0, 0x84 - lsls r0, 1 - adds r1, r6, r0 - adds r0, r5, 0 - movs r2, 0x5 - bl sub_808314C - ldr r2, _08081428 - adds r1, r6, r2 - adds r0, r5, 0 - movs r2, 0x5 - bl sub_808314C - movs r1, 0x89 - lsls r1, 1 - adds r0, r6, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8083060 - ldr r2, _0808142C - adds r0, r6, r2 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8083060 - movs r1, 0x8A - lsls r1, 1 - adds r0, r6, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8083060 - movs r2, 0x8C - lsls r2, 1 - adds r1, r6, r2 - adds r0, r5, 0 - bl sub_8081B08 - movs r0, 0x9E - lsls r0, 1 - adds r1, r6, r0 - adds r0, r5, 0 - bl sub_8081B34 - movs r2, 0xA0 - lsls r2, 1 - adds r1, r6, r2 - adds r0, r5, 0 - bl sub_8081B34 - movs r1, 0xA2 - lsls r1, 1 - adds r0, r6, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - ldr r2, _08081430 - adds r0, r6, r2 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - ldr r1, _08081434 - adds r0, r6, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - movs r2, 0xA3 - lsls r2, 1 - adds r0, r6, r2 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - movs r1, 0xA4 - lsls r1, 1 - adds r0, r6, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - ldr r2, _08081438 - adds r0, r6, r2 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - movs r1, 0xA5 - lsls r1, 1 - adds r0, r6, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - ldr r2, _0808143C - adds r0, r6, r2 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - movs r1, 0xA6 - lsls r1, 1 - adds r0, r6, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - movs r2, 0xA7 - lsls r2, 1 - adds r0, r6, r2 - ldrh r1, [r0] - adds r0, r5, 0 - bl sub_8083030 - movs r1, 0xA8 - lsls r1, 1 - adds r0, r6, r1 - ldrh r1, [r0] - adds r0, r5, 0 - bl sub_8083030 - movs r2, 0xA9 - lsls r2, 1 - adds r0, r6, r2 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - ldr r1, _08081440 - adds r0, r6, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8083060 - movs r2, 0xAA - lsls r2, 1 - adds r0, r6, r2 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - ldr r1, _08081444 - adds r0, r6, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - movs r2, 0xAB - lsls r2, 1 - adds r0, r6, r2 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - movs r1, 0xB2 - lsls r1, 1 - adds r0, r6, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8083060 - ldr r2, _08081448 - adds r0, r6, r2 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8083060 - movs r1, 0xB3 - lsls r1, 1 - adds r0, r6, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8083060 - ldr r2, _0808144C - adds r0, r6, r2 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8083060 - movs r1, 0xB4 - lsls r1, 1 - adds r0, r6, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8083060 - ldr r2, _08081450 - adds r0, r6, r2 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8083060 - movs r0, 0xB6 - lsls r0, 1 - adds r1, r6, r0 - adds r0, r5, 0 - bl sub_80830D8 - movs r1, 0xBA - lsls r1, 1 - adds r0, r6, r1 - ldr r1, [r0] - adds r0, r5, 0 - bl sub_80830A0 - movs r2, 0xBC - lsls r2, 1 - adds r0, r6, r2 - ldrh r1, [r0] - adds r0, r5, 0 - bl sub_8083030 - movs r1, 0xFC - lsls r1, 1 - adds r0, r6, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r5, 0 - bl sub_8083048 - movs r1, 0xFD - lsls r1, 1 - adds r0, r6, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r5, 0 - bl sub_8083048 - movs r1, 0xFE - lsls r1, 1 - adds r0, r6, r1 - ldr r1, [r0] - adds r0, r5, 0 - bl sub_8083078 - ldr r2, [sp, 0x224] - ldrb r1, [r2] - adds r0, r5, 0 - bl sub_80818B8 - movs r3, 0xA5 - lsls r3, 2 - add sp, r3 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08081428: .4byte 0x0000010d -_0808142C: .4byte 0x00000113 -_08081430: .4byte 0x00000145 -_08081434: .4byte 0x00000147 -_08081438: .4byte 0x00000149 -_0808143C: .4byte 0x0000014b -_08081440: .4byte 0x00000153 -_08081444: .4byte 0x00000155 -_08081448: .4byte 0x00000165 -_0808144C: .4byte 0x00000167 -_08081450: .4byte 0x00000169 - thumb_func_end sub_8080E0C - - thumb_func_start sub_8081454 -sub_8081454: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r7, r0, 0 - ldr r1, _08081600 - bl sub_808300C - ldr r4, _08081604 - ldr r0, [r4] - ldr r1, _08081608 - adds r0, r1 - ldrb r1, [r0] - adds r0, r7, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r2, _0808160C - adds r0, r2 - ldrb r1, [r0] - adds r0, r7, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r1, _08081610 - adds r0, r1 - ldrb r1, [r0] - adds r0, r7, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r2, _08081614 - adds r0, r2 - ldrb r1, [r0] - adds r0, r7, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r1, _08081618 - adds r0, r1 - ldrb r1, [r0] - adds r0, r7, 0 - bl sub_8083060 - ldr r0, [r4] - ldr r2, _0808161C - adds r0, r2 - ldrb r1, [r0] - adds r0, r7, 0 - bl sub_8083060 - ldr r0, [r4] - ldr r1, _08081620 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r7, 0 - bl sub_8083048 - ldr r0, [r4] - ldr r1, _08081624 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r7, 0 - bl sub_8083048 - ldr r0, [r4] - ldr r1, _08081628 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r7, 0 - bl sub_8083048 - ldr r0, [r4] - ldr r1, _0808162C - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r7, 0 - bl sub_8083048 - ldr r0, [r4] - ldr r1, _08081630 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r7, 0 - bl sub_8083048 - movs r1, 0 - mov r9, r4 -_08081510: - lsls r0, r1, 2 - adds r2, r1, 0x1 - mov r8, r2 - adds r0, r1 - lsls r0, 2 - adds r0, r1 - lsls r0, 6 - ldr r1, _08081634 - adds r6, r0, r1 - movs r5, 0 - movs r4, 0x37 -_08081526: - mov r2, r9 - ldr r1, [r2] - adds r1, r6 - adds r1, r5 - adds r0, r7, 0 - bl sub_8081B60 - adds r5, 0x18 - subs r4, 0x1 - cmp r4, 0 - bge _08081526 - mov r1, r8 - cmp r1, 0x1F - ble _08081510 - ldr r4, _08081604 - ldr r1, [r4] - ldr r0, _08081638 - adds r1, r0 - adds r0, r7, 0 - bl sub_80830D8 - ldr r1, [r4] - ldr r2, _0808163C - adds r1, r2 - adds r0, r7, 0 - bl sub_80830D8 - ldr r6, _08081640 - movs r5, 0x7 -_08081560: - ldr r1, [r4] - adds r1, r6 - adds r0, r7, 0 - bl sub_80830D8 - adds r6, 0x4 - subs r5, 0x1 - cmp r5, 0 - bge _08081560 - ldr r4, _08081604 - ldr r1, [r4] - ldr r0, _08081644 - adds r1, r0 - adds r0, r7, 0 - bl sub_80830F8 - ldr r1, [r4] - ldr r2, _08081648 - adds r1, r2 - adds r0, r7, 0 - bl sub_80830F8 - ldr r1, [r4] - ldr r0, _0808164C - adds r1, r0 - adds r0, r7, 0 - bl sub_808312C - movs r1, 0 - mov r10, r4 -_0808159C: - movs r4, 0 - adds r2, r1, 0x1 - mov r8, r2 - lsls r0, r1, 1 - lsls r2, r1, 3 - mov r9, r2 - adds r0, r1 - lsls r0, 6 - ldr r1, _08081650 - adds r6, r0, r1 - movs r5, 0 -_080815B2: - mov r2, r10 - ldr r1, [r2] - adds r1, r6 - adds r1, r5 - adds r0, r7, 0 - bl sub_8081B60 - mov r1, r10 - ldr r0, [r1] - mov r2, r9 - adds r1, r4, r2 - ldr r2, _08081654 - adds r0, r2 - adds r0, r1 - ldrb r1, [r0] - adds r0, r7, 0 - bl sub_8083060 - adds r5, 0x18 - adds r4, 0x1 - cmp r4, 0x7 - ble _080815B2 - mov r1, r8 - cmp r1, 0x7 - ble _0808159C - ldr r0, _08081604 - ldr r1, [r0] - ldr r0, _08081658 - adds r1, r0 - adds r0, r7, 0 - bl sub_8081B94 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08081600: .4byte gUnknown_81071E0 -_08081604: .4byte gDungeon -_08081608: .4byte 0x00003a08 -_0808160C: .4byte 0x00003a09 -_08081610: .4byte 0x00003a0a -_08081614: .4byte 0x00003a0b -_08081618: .4byte 0x00003a0c -_0808161C: .4byte 0x00003a0d -_08081620: .4byte 0x00003a0e -_08081624: .4byte 0x00003a10 -_08081628: .4byte 0x00003a12 -_0808162C: .4byte 0x00003a14 -_08081630: .4byte 0x00003a16 -_08081634: .4byte 0x00003a18 -_08081638: .4byte 0x0000e218 -_0808163C: .4byte 0x0000e21c -_08081640: .4byte 0x0000e220 -_08081644: .4byte 0x0000e240 -_08081648: .4byte 0x0000e250 -_0808164C: .4byte 0x0000e260 -_08081650: .4byte 0x0000e27c -_08081654: .4byte 0x0000e87c -_08081658: .4byte 0x0000e264 - thumb_func_end sub_8081454 - - thumb_func_start sub_808165C -sub_808165C: - push {r4,r5,lr} - adds r5, r0, 0 - ldr r1, _08081708 - bl sub_808300C - ldr r4, _0808170C - ldr r0, [r4] - ldr r1, _08081710 - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8083060 - ldr r0, [r4] - ldr r1, _08081714 - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8083060 - ldr r0, [r4] - ldr r1, _08081718 - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r1, _0808171C - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r1, _08081720 - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r1, _08081724 - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r1, _08081728 - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r1, _0808172C - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r1, _08081730 - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r1, _08081734 - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - ldr r0, [r4] - ldr r1, _08081738 - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80830B4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08081708: .4byte gUnknown_81071E0 -_0808170C: .4byte gDungeon -_08081710: .4byte 0x00018208 -_08081714: .4byte 0x00018209 -_08081718: .4byte 0x0001820a -_0808171C: .4byte 0x0001820b -_08081720: .4byte 0x0001820c -_08081724: .4byte 0x0001820d -_08081728: .4byte 0x0001820e -_0808172C: .4byte 0x0001820f -_08081730: .4byte 0x00018210 -_08081734: .4byte 0x00018211 -_08081738: .4byte 0x00018213 - thumb_func_end sub_808165C - - thumb_func_start sub_808173C -sub_808173C: - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _08081778 - ldr r0, [r4] - ldr r1, _0808177C - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r5, 0 - bl sub_8083048 - ldr r0, [r4] - ldr r1, _08081780 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r5, 0 - bl sub_8083048 - ldr r0, [r4] - ldr r1, _08081784 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r5, 0 - bl sub_8083048 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08081778: .4byte gDungeon -_0808177C: .4byte 0x0001ced6 -_08081780: .4byte 0x0001ced8 -_08081784: .4byte 0x0001ceda - thumb_func_end sub_808173C - - thumb_func_start sub_8081788 -sub_8081788: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r1, r5, 0x1 - adds r0, r4, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r5, 0x2 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_8082FA8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8081788 - - thumb_func_start sub_80817B0 -sub_80817B0: - push {lr} - sub sp, 0x4 - mov r2, sp - strb r1, [r2] - mov r1, sp - movs r2, 0x1 - bl sub_8082FA8 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_80817B0 - - thumb_func_start sub_80817C8 -sub_80817C8: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r1, r4, 0x2 - movs r2, 0x1 - bl sub_8082FA8 - adds r1, r4, 0 - adds r1, 0x14 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r4, 0x16 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_8082FA8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80817C8 - - thumb_func_start sub_80817F4 -sub_80817F4: - push {lr} - sub sp, 0x4 - mov r2, sp - strh r1, [r2] - mov r1, sp - movs r2, 0x2 - bl sub_8082FA8 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_80817F4 - - thumb_func_start sub_808180C -sub_808180C: - push {lr} - sub sp, 0x4 - mov r2, sp - strb r1, [r2] - mov r1, sp - movs r2, 0x1 - bl sub_8082FA8 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_808180C - - thumb_func_start sub_8081824 -sub_8081824: - push {lr} - sub sp, 0x4 - mov r2, sp - strb r1, [r2] - mov r1, sp - movs r2, 0x1 - bl sub_8082FA8 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_8081824 - - thumb_func_start sub_808183C -sub_808183C: - push {lr} - sub sp, 0x4 - mov r2, sp - strb r1, [r2] - mov r1, sp - movs r2, 0x1 - bl sub_8082FA8 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_808183C - - thumb_func_start sub_8081854 -sub_8081854: - push {lr} - sub sp, 0x4 - mov r2, sp - strb r1, [r2] - mov r1, sp - movs r2, 0x1 - bl sub_8082FA8 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_8081854 - - thumb_func_start sub_808186C -sub_808186C: - push {lr} - sub sp, 0x4 - str r1, [sp] - mov r1, sp - movs r2, 0x4 - bl sub_8082FA8 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_808186C - - thumb_func_start sub_8081880 -sub_8081880: - push {lr} - sub sp, 0x4 - mov r2, sp - strb r1, [r2] - mov r1, sp - movs r2, 0x1 - bl sub_8082FA8 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_8081880 - - thumb_func_start sub_8081898 -sub_8081898: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r0, 0 - ldrsh r1, [r4, r0] - adds r0, r5, 0 - bl sub_8083048 - ldrb r1, [r4, 0x2] - adds r0, r5, 0 - bl sub_808180C - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8081898 - - thumb_func_start sub_80818B8 -sub_80818B8: - push {lr} - lsls r1, 24 - lsrs r1, 24 - bl sub_8083060 - pop {r0} - bx r0 - thumb_func_end sub_80818B8 - - thumb_func_start sub_80818C8 -sub_80818C8: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrb r1, [r4] - bl sub_8083060 - ldrb r1, [r4, 0x1] - adds r0, r5, 0 - bl sub_8083060 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80818C8 - - thumb_func_start sub_80818E4 -sub_80818E4: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - ldrb r1, [r4, 0x1] - adds r0, r5, 0 - bl sub_80830B4 - ldrb r1, [r4, 0x2] - adds r0, r5, 0 - bl sub_80830B4 - ldrb r1, [r4, 0x3] - adds r0, r5, 0 - bl sub_80830B4 - ldrh r1, [r4, 0x4] - adds r0, r5, 0 - bl sub_8083030 - adds r4, 0x10 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80830D8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80818E4 - - thumb_func_start sub_8081920 -sub_8081920: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - ldrb r1, [r4, 0x1] - adds r0, r5, 0 - bl sub_8083060 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8081920 - - thumb_func_start sub_808193C -sub_808193C: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - ldrb r1, [r4, 0x1] - adds r0, r5, 0 - bl sub_8083060 - ldrb r1, [r4, 0x2] - adds r0, r5, 0 - bl sub_8083060 - ldrb r1, [r4, 0x3] - adds r0, r5, 0 - bl sub_8083060 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_808193C - - thumb_func_start sub_8081968 -sub_8081968: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - ldrb r1, [r4, 0x8] - adds r0, r5, 0 - bl sub_8083060 - ldrb r1, [r4, 0x9] - adds r0, r5, 0 - bl sub_8083060 - ldr r1, [r4, 0x4] - adds r0, r5, 0 - bl sub_8083078 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8081968 - - thumb_func_start sub_8081994 -sub_8081994: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - ldrb r1, [r4, 0x1] - adds r0, r5, 0 - bl sub_8083060 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8081994 - - thumb_func_start sub_80819B0 -sub_80819B0: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - ldrb r1, [r4, 0x1] - adds r0, r5, 0 - bl sub_8083060 - ldrb r1, [r4, 0x2] - adds r0, r5, 0 - bl sub_8083060 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80819B0 - - thumb_func_start sub_80819D4 -sub_80819D4: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - ldrb r1, [r4, 0x1] - adds r0, r5, 0 - bl sub_8083060 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80819D4 - - thumb_func_start sub_80819F0 -sub_80819F0: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - ldrb r1, [r4, 0x1] - adds r0, r5, 0 - bl sub_80830B4 - ldrb r1, [r4, 0x2] - adds r0, r5, 0 - bl sub_80830B4 - ldrb r1, [r4, 0x3] - adds r0, r5, 0 - bl sub_8083060 - ldrb r1, [r4, 0x4] - adds r0, r5, 0 - bl sub_8083060 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80819F0 - - thumb_func_start sub_8081A24 -sub_8081A24: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - ldr r1, [r4, 0x4] - adds r0, r5, 0 - bl sub_8083078 - ldrb r1, [r4, 0x8] - adds r0, r5, 0 - bl sub_8083060 - ldrb r1, [r4, 0x9] - adds r0, r5, 0 - bl sub_8083060 - ldrb r1, [r4, 0xA] - adds r0, r5, 0 - bl sub_8083060 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8081A24 - - thumb_func_start sub_8081A58 -sub_8081A58: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - ldrb r1, [r4, 0x1] - adds r0, r5, 0 - bl sub_8083060 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8081A58 - - thumb_func_start sub_8081A74 -sub_8081A74: - push {lr} - movs r2, 0x1 - bl sub_8082FA8 - pop {r0} - bx r0 - thumb_func_end sub_8081A74 - - thumb_func_start sub_8081A80 -sub_8081A80: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - ldrb r1, [r4, 0x1] - adds r0, r5, 0 - bl sub_8083060 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8081A80 - - thumb_func_start sub_8081A9C -sub_8081A9C: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - ldrb r1, [r4, 0x1] - adds r0, r5, 0 - bl sub_8083060 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8081A9C - - thumb_func_start sub_8081AB8 -sub_8081AB8: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - ldrb r1, [r4, 0x1] - adds r0, r5, 0 - bl sub_8083060 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8081AB8 - - thumb_func_start sub_8081AD4 -sub_8081AD4: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrb r1, [r4] - bl sub_8083060 - ldrb r1, [r4, 0x1] - adds r0, r5, 0 - bl sub_8083060 - adds r1, r4, 0x2 - adds r0, r5, 0 - movs r2, 0x2 - bl sub_8082FA8 - ldrb r1, [r4, 0x4] - adds r0, r5, 0 - bl sub_8083060 - ldrb r1, [r4, 0x5] - adds r0, r5, 0 - bl sub_8083060 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8081AD4 - - thumb_func_start sub_8081B08 -sub_8081B08: - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - adds r4, r7, 0 - movs r5, 0x3 -_08081B12: - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_8081AD4 - adds r4, 0x8 - subs r5, 0x1 - cmp r5, 0 - bge _08081B12 - adds r0, r7, 0 - adds r0, 0x20 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_8083060 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8081B08 - - thumb_func_start sub_8081B34 -sub_8081B34: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r0, 0 - ldrsh r1, [r4, r0] - adds r0, r5, 0 - bl sub_8083048 - movs r0, 0x2 - ldrsh r1, [r4, r0] - adds r0, r5, 0 - bl sub_8083048 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8081B34 - - thumb_func_start sub_8081B54 -sub_8081B54: - push {lr} - movs r2, 0x3 - bl sub_8082FA8 - pop {r0} - bx r0 - thumb_func_end sub_8081B54 - - thumb_func_start sub_8081B60 -sub_8081B60: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrh r1, [r4] - bl sub_8083030 - ldrh r1, [r4, 0x4] - adds r0, r5, 0 - bl sub_8083030 - adds r1, r4, 0 - adds r1, 0x9 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r4, 0xE - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_8082FA8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8081B60 - - thumb_func_start sub_8081B94 -sub_8081B94: - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r1, r5, 0x1 - adds r0, r6, 0 - movs r2, 0x1 - bl sub_8082FA8 - movs r4, 0 -_08081BAC: - adds r0, r5, 0x3 - adds r0, r4 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_8083060 - adds r0, r5, 0 - adds r0, 0xB - adds r0, r4 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_8083060 - adds r4, 0x1 - cmp r4, 0x7 - ble _08081BAC - ldrb r1, [r5, 0x2] - adds r0, r6, 0 - bl sub_8083060 - ldrb r1, [r5, 0x13] - adds r0, r6, 0 - bl sub_8083060 - ldrb r1, [r5, 0x14] - adds r0, r6, 0 - bl sub_8083060 - ldrb r1, [r5, 0x15] - adds r0, r6, 0 - bl sub_80830B4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8081B94 - - thumb_func_start sub_8081BF4 -sub_8081BF4: - push {lr} - sub sp, 0x10 - adds r3, r0, 0 - adds r2, r1, 0 - mov r0, sp - adds r1, r3, 0 - bl sub_8082FD4 - add r1, sp, 0xC - mov r0, sp - movs r2, 0x4 - bl sub_8082FE0 - mov r0, sp - bl sub_8081C50 - mov r0, sp - bl sub_8081C7C - mov r0, sp - bl sub_8081F2C - mov r0, sp - bl sub_808201C - mov r0, sp - bl sub_8082060 - mov r0, sp - bl sub_80820D8 - mov r0, sp - bl sub_808217C - ldr r1, _08081C4C - mov r0, sp - bl sub_8083018 - mov r0, sp - bl nullsub_98 - add sp, 0x10 - pop {r0} - bx r0 - .align 2, 0 -_08081C4C: .4byte gUnknown_81071D4 - thumb_func_end sub_8081BF4 - - thumb_func_start sub_8081C50 -sub_8081C50: - push {r4,lr} - adds r4, r0, 0 - ldr r1, _08081C70 - bl sub_8083018 - ldr r0, _08081C74 - ldr r1, [r0] - ldr r0, _08081C78 - adds r1, r0 - adds r0, r4, 0 - movs r2, 0x58 - bl sub_8082FE0 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08081C70: .4byte gUnknown_81071E0 -_08081C74: .4byte gDungeon -_08081C78: .4byte 0x00000644 - thumb_func_end sub_8081C50 - - thumb_func_start sub_8081C7C -sub_8081C7C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r7, r0, 0 - ldr r1, _08081E20 - bl sub_8083018 - adds r0, r7, 0 - bl sub_80831DC - ldr r4, _08081E24 - ldr r1, [r4] - ldr r2, _08081E28 - adds r1, r2 - strb r0, [r1] - adds r0, r7, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r3, _08081E2C - adds r1, r3 - strb r0, [r1] - adds r0, r7, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _08081E30 - adds r1, r2 - strb r0, [r1] - adds r0, r7, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r3, _08081E34 - adds r1, r3 - strb r0, [r1] - adds r0, r7, 0 - bl sub_8083188 - ldr r1, [r4] - ldr r2, _08081E38 - adds r1, r2 - strb r0, [r1] - adds r0, r7, 0 - bl sub_8083188 - ldr r1, [r4] - ldr r3, _08081E3C - adds r1, r3 - strb r0, [r1] - adds r0, r7, 0 - bl sub_8083170 - ldr r1, [r4] - ldr r2, _08081E40 - adds r1, r2 - strh r0, [r1] - adds r0, r7, 0 - bl sub_8083170 - ldr r1, [r4] - ldr r3, _08081E44 - adds r1, r3 - strh r0, [r1] - adds r0, r7, 0 - bl sub_8083170 - ldr r1, [r4] - ldr r2, _08081E48 - adds r1, r2 - strh r0, [r1] - adds r0, r7, 0 - bl sub_8083170 - ldr r1, [r4] - ldr r3, _08081E4C - adds r1, r3 - strh r0, [r1] - adds r0, r7, 0 - bl sub_8083170 - ldr r1, [r4] - ldr r2, _08081E50 - adds r1, r2 - strh r0, [r1] - movs r1, 0 - mov r9, r4 -_08081D2E: - lsls r0, r1, 2 - adds r3, r1, 0x1 - mov r8, r3 - adds r0, r1 - lsls r0, 2 - adds r0, r1 - lsls r0, 6 - ldr r1, _08081E54 - adds r6, r0, r1 - movs r5, 0 - movs r4, 0x37 -_08081D44: - mov r2, r9 - ldr r1, [r2] - adds r1, r6 - adds r1, r5 - adds r0, r7, 0 - bl sub_8081E7C - adds r5, 0x18 - subs r4, 0x1 - cmp r4, 0 - bge _08081D44 - mov r1, r8 - cmp r1, 0x1F - ble _08081D2E - ldr r4, _08081E24 - ldr r1, [r4] - ldr r3, _08081E58 - adds r1, r3 - adds r0, r7, 0 - bl sub_80831F8 - ldr r1, [r4] - ldr r0, _08081E5C - adds r1, r0 - adds r0, r7, 0 - bl sub_80831F8 - ldr r6, _08081E60 - movs r5, 0x7 -_08081D7E: - ldr r1, [r4] - adds r1, r6 - adds r0, r7, 0 - bl sub_80831F8 - adds r6, 0x4 - subs r5, 0x1 - cmp r5, 0 - bge _08081D7E - ldr r4, _08081E24 - ldr r1, [r4] - ldr r2, _08081E64 - adds r1, r2 - adds r0, r7, 0 - bl sub_8083220 - ldr r1, [r4] - ldr r3, _08081E68 - adds r1, r3 - adds r0, r7, 0 - bl sub_8083220 - ldr r1, [r4] - ldr r0, _08081E6C - adds r1, r0 - adds r0, r7, 0 - bl sub_8083260 - movs r1, 0 - mov r10, r4 -_08081DBA: - movs r4, 0 - adds r2, r1, 0x1 - mov r8, r2 - lsls r0, r1, 1 - lsls r3, r1, 3 - mov r9, r3 - adds r0, r1 - lsls r0, 6 - ldr r1, _08081E70 - adds r6, r0, r1 - movs r5, 0 -_08081DD0: - mov r2, r10 - ldr r1, [r2] - adds r1, r6 - adds r1, r5 - adds r0, r7, 0 - bl sub_8081E7C - adds r0, r7, 0 - bl sub_8083188 - mov r3, r10 - ldr r1, [r3] - mov r3, r9 - adds r2, r4, r3 - ldr r3, _08081E74 - adds r1, r3 - adds r1, r2 - strb r0, [r1] - adds r5, 0x18 - adds r4, 0x1 - cmp r4, 0x7 - ble _08081DD0 - mov r1, r8 - cmp r1, 0x7 - ble _08081DBA - ldr r0, _08081E24 - ldr r1, [r0] - ldr r0, _08081E78 - adds r1, r0 - adds r0, r7, 0 - bl sub_8081EC0 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08081E20: .4byte gUnknown_81071E0 -_08081E24: .4byte gDungeon -_08081E28: .4byte 0x00003a08 -_08081E2C: .4byte 0x00003a09 -_08081E30: .4byte 0x00003a0a -_08081E34: .4byte 0x00003a0b -_08081E38: .4byte 0x00003a0c -_08081E3C: .4byte 0x00003a0d -_08081E40: .4byte 0x00003a0e -_08081E44: .4byte 0x00003a10 -_08081E48: .4byte 0x00003a12 -_08081E4C: .4byte 0x00003a14 -_08081E50: .4byte 0x00003a16 -_08081E54: .4byte 0x00003a18 -_08081E58: .4byte 0x0000e218 -_08081E5C: .4byte 0x0000e21c -_08081E60: .4byte 0x0000e220 -_08081E64: .4byte 0x0000e240 -_08081E68: .4byte 0x0000e250 -_08081E6C: .4byte 0x0000e260 -_08081E70: .4byte 0x0000e27c -_08081E74: .4byte 0x0000e87c -_08081E78: .4byte 0x0000e264 - thumb_func_end sub_8081C7C - - thumb_func_start sub_8081E7C -sub_8081E7C: - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x18 - bl memset - adds r0, r5, 0 - bl sub_8083158 - movs r6, 0 - strh r0, [r4] - adds r0, r5, 0 - bl sub_8083158 - strh r0, [r4, 0x4] - adds r1, r4, 0 - adds r1, 0x9 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r1, r4, 0 - adds r1, 0xE - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FE0 - str r6, [r4, 0x10] - str r6, [r4, 0x14] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8081E7C - - thumb_func_start sub_8081EC0 -sub_8081EC0: - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - movs r1, 0 - movs r2, 0x18 - bl memset - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r1, r5, 0x1 - adds r0, r6, 0 - movs r2, 0x1 - bl sub_8082FE0 - movs r4, 0 -_08081EE6: - adds r0, r6, 0 - bl sub_8083188 - adds r1, r5, 0x3 - adds r1, r4 - strb r0, [r1] - adds r0, r6, 0 - bl sub_8083188 - adds r1, r5, 0 - adds r1, 0xB - adds r1, r4 - strb r0, [r1] - adds r4, 0x1 - cmp r4, 0x7 - ble _08081EE6 - adds r0, r6, 0 - bl sub_8083188 - strb r0, [r5, 0x2] - adds r0, r6, 0 - bl sub_8083188 - strb r0, [r5, 0x13] - adds r0, r6, 0 - bl sub_8083188 - strb r0, [r5, 0x14] - adds r0, r6, 0 - bl sub_80831DC - strb r0, [r5, 0x15] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8081EC0 - - thumb_func_start sub_8081F2C -sub_8081F2C: - push {r4,r5,lr} - adds r5, r0, 0 - ldr r1, _08081FE4 - bl sub_8083018 - ldr r4, _08081FE8 - ldr r0, [r4] - ldr r1, _08081FEC - adds r0, r1 - movs r1, 0 - str r1, [r0] - adds r0, r5, 0 - bl sub_8083188 - ldr r1, [r4] - ldr r2, _08081FF0 - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_8083188 - ldr r1, [r4] - ldr r2, _08081FF4 - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _08081FF8 - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _08081FFC - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _08082000 - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _08082004 - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _08082008 - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _0808200C - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _08082010 - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _08082014 - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _08082018 - adds r1, r2 - strb r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08081FE4: .4byte gUnknown_81071E0 -_08081FE8: .4byte gDungeon -_08081FEC: .4byte 0x000181f8 -_08081FF0: .4byte 0x00018208 -_08081FF4: .4byte 0x00018209 -_08081FF8: .4byte 0x0001820a -_08081FFC: .4byte 0x0001820b -_08082000: .4byte 0x0001820c -_08082004: .4byte 0x0001820d -_08082008: .4byte 0x0001820e -_0808200C: .4byte 0x0001820f -_08082010: .4byte 0x00018210 -_08082014: .4byte 0x00018211 -_08082018: .4byte 0x00018213 - thumb_func_end sub_8081F2C - - thumb_func_start sub_808201C -sub_808201C: - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_8083170 - ldr r4, _08082050 - ldr r1, [r4] - ldr r2, _08082054 - adds r1, r2 - strh r0, [r1] - adds r0, r5, 0 - bl sub_8083170 - ldr r1, [r4] - ldr r2, _08082058 - adds r1, r2 - strh r0, [r1] - adds r0, r5, 0 - bl sub_8083170 - ldr r1, [r4] - ldr r2, _0808205C - adds r1, r2 - strh r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08082050: .4byte gDungeon -_08082054: .4byte 0x0001ced6 -_08082058: .4byte 0x0001ced8 -_0808205C: .4byte 0x0001ceda - thumb_func_end sub_808201C - - thumb_func_start sub_8082060 -sub_8082060: - push {r4-r7,lr} - sub sp, 0x8 - adds r5, r0, 0 - ldr r1, _080820A4 - bl sub_8083018 - add r4, sp, 0x4 - mov r7, sp - movs r6, 0x3F -_08082072: - adds r0, r5, 0 - mov r1, sp - bl sub_80820A8 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80831F8 - ldrb r1, [r7] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08082096 - adds r0, r4, 0 - mov r1, sp - movs r2, 0 - bl sub_80460F8 -_08082096: - subs r6, 0x1 - cmp r6, 0 - bge _08082072 - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080820A4: .4byte gUnknown_81071E0 - thumb_func_end sub_8082060 - - thumb_func_start sub_80820A8 -sub_80820A8: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r0, 0 - str r0, [r4] - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r1, r4, 0x1 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r4, 0x2 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_8082FE0 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80820A8 - - thumb_func_start sub_80820D8 -sub_80820D8: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r5, r0, 0 - ldr r1, _08082178 - bl sub_8083018 - movs r0, 0x1 - add r0, sp - mov r9, r0 - add r1, sp, 0x4 - mov r8, r1 - mov r7, sp - movs r2, 0x3F - mov r10, r2 -_080820FC: - movs r0, 0x6 - strb r0, [r7] - movs r0, 0 - mov r3, sp - strb r0, [r3, 0x1] - adds r0, r5, 0 - mov r1, sp - movs r2, 0x1 - bl sub_8082FE0 - adds r0, r5, 0 - mov r1, sp - adds r1, 0x1 - movs r2, 0x1 - bl sub_8082FE0 - adds r0, r5, 0 - bl sub_80831DC - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0 - add r1, sp, 0x4 - bl sub_80831F8 - ldrb r0, [r7] - cmp r0, 0xFF - beq _0808215C - mov r1, r8 - movs r2, 0 - ldrsh r0, [r1, r2] - mov r3, sp - movs r2, 0x6 - ldrsh r1, [r3, r2] - bl GetTileSafe - adds r4, r0, 0 - ldrb r0, [r7] - mov r3, r9 - ldrb r2, [r3] - mov r1, r8 - bl sub_8045684 - cmp r0, 0 - beq _0808215C - str r0, [r4, 0x14] - adds r0, 0x20 - strb r6, [r0] -_0808215C: - movs r0, 0x1 - negs r0, r0 - add r10, r0 - mov r1, r10 - cmp r1, 0 - bge _080820FC - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08082178: .4byte gUnknown_81071E0 - thumb_func_end sub_80820D8 - - thumb_func_start sub_808217C -sub_808217C: - push {r4,r5,lr} - adds r5, r0, 0 - ldr r1, _08082250 - bl sub_8083018 - adds r0, r5, 0 - bl sub_80831A0 - ldr r4, _08082254 - ldr r1, [r4] - ldr r2, _08082258 - adds r1, r2 - str r0, [r1] - adds r0, r5, 0 - bl sub_80831A0 - ldr r1, [r4] - ldr r2, _0808225C - adds r1, r2 - str r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _08082260 - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _08082264 - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _08082268 - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _0808226C - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _08082270 - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _08082274 - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _08082278 - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [r4] - ldr r2, _0808227C - adds r1, r2 - strb r0, [r1] - adds r0, r5, 0 - bl sub_8083158 - ldr r1, [r4] - movs r2, 0xE0 - lsls r2, 6 - adds r1, r2 - strh r0, [r1] - movs r4, 0 -_08082226: - adds r0, r5, 0 - movs r1, 0x1 - adds r2, r4, 0 - bl sub_8082280 - adds r4, 0x1 - cmp r4, 0x3 - ble _08082226 - movs r4, 0 -_08082238: - adds r0, r5, 0 - movs r1, 0 - adds r2, r4, 0 - bl sub_8082280 - adds r4, 0x1 - cmp r4, 0xF - ble _08082238 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08082250: .4byte gUnknown_81071E0 -_08082254: .4byte gDungeon -_08082258: .4byte 0x000037f0 -_0808225C: .4byte 0x000037f4 -_08082260: .4byte 0x000037f8 -_08082264: .4byte 0x000037f9 -_08082268: .4byte 0x000037fa -_0808226C: .4byte 0x000037fb -_08082270: .4byte 0x000037fc -_08082274: .4byte 0x000037fd -_08082278: .4byte 0x000037fe -_0808227C: .4byte 0x000037ff - thumb_func_end sub_808217C - - thumb_func_start sub_8082280 -sub_8082280: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, _0808266C - add sp, r4 - adds r5, r0, 0 - str r2, [sp, 0x210] - lsls r1, 24 - lsrs r1, 24 - str r1, [sp, 0x20C] - movs r2, 0x82 - lsls r2, 2 - mov r0, sp - movs r1, 0 - bl memset - adds r0, r5, 0 - bl sub_8083188 - adds r0, r5, 0 - bl sub_8083188 - adds r0, r5, 0 - bl sub_8083188 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x214] - add r4, sp, 0x208 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80831F8 - adds r0, r5, 0 - bl sub_80831DC - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x218] - adds r0, r5, 0 - bl sub_8083158 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x21C] - ldr r1, _08082670 - movs r0, 0 - str r0, [r1] - adds r0, r5, 0 - bl sub_8083158 - mov r1, sp - strh r0, [r1] - adds r0, r5, 0 - bl sub_8082BC0 - mov r1, sp - strh r0, [r1, 0x4] - adds r0, r5, 0 - bl sub_8082BC0 - mov r1, sp - strh r0, [r1, 0x2] - adds r0, r5, 0 - bl sub_80831DC - mov r1, sp - strb r0, [r1, 0x6] - adds r0, r5, 0 - bl sub_80831DC - mov r1, sp - strb r0, [r1, 0x7] - adds r0, r5, 0 - bl sub_8083188 - mov r1, sp - strb r0, [r1, 0x8] - adds r0, r5, 0 - bl sub_8083188 - mov r1, sp - strb r0, [r1, 0x9] - adds r0, r5, 0 - bl sub_8083188 - mov r1, sp - strb r0, [r1, 0xA] - add r1, sp, 0x40 - adds r0, r5, 0 - bl sub_8082F64 - adds r0, r5, 0 - bl sub_8083170 - mov r1, sp - strh r0, [r1, 0xC] - adds r0, r5, 0 - bl sub_8083170 - mov r1, sp - strh r0, [r1, 0xE] - adds r0, r5, 0 - bl sub_8083170 - mov r1, sp - strh r0, [r1, 0x10] - adds r0, r5, 0 - bl sub_8083170 - mov r1, sp - strh r0, [r1, 0x12] - adds r0, r5, 0 - bl sub_8083188 - mov r1, sp - strb r0, [r1, 0x14] - adds r0, r5, 0 - bl sub_8083188 - mov r1, sp - strb r0, [r1, 0x15] - adds r0, r5, 0 - bl sub_8083188 - mov r1, sp - strb r0, [r1, 0x16] - adds r0, r5, 0 - bl sub_8083188 - mov r1, sp - strb r0, [r1, 0x17] - adds r0, r5, 0 - bl sub_80831A0 - str r0, [sp, 0x18] - adds r0, r5, 0 - bl sub_8083170 - mov r1, sp - strh r0, [r1, 0x1C] - adds r0, r5, 0 - bl sub_8083170 - mov r1, sp - strh r0, [r1, 0x1E] - adds r0, r5, 0 - bl sub_8083170 - mov r1, sp - strh r0, [r1, 0x20] - adds r0, r5, 0 - bl sub_8083170 - mov r1, sp - strh r0, [r1, 0x22] - adds r0, r5, 0 - bl sub_8083170 - mov r1, sp - strh r0, [r1, 0x24] - adds r0, r5, 0 - bl sub_8083170 - mov r1, sp - strh r0, [r1, 0x26] - adds r0, r5, 0 - bl sub_8083170 - mov r1, sp - strh r0, [r1, 0x28] - adds r0, r5, 0 - bl sub_80831C8 - str r0, [sp, 0x2C] - adds r0, r5, 0 - bl sub_80831C8 - str r0, [sp, 0x30] - adds r0, r5, 0 - bl sub_80831C8 - str r0, [sp, 0x34] - adds r0, r5, 0 - bl sub_80831C8 - str r0, [sp, 0x38] - add r1, sp, 0x44 - adds r0, r5, 0 - bl sub_8082CBC - adds r0, r5, 0 - bl sub_8082BFC - add r1, sp, 0x5C - strb r0, [r1] - adds r0, r5, 0 - bl sub_8082BFC - mov r1, sp - adds r1, 0x5D - strb r0, [r1] - adds r0, r5, 0 - bl sub_8082C18 - mov r1, sp - adds r1, 0x5E - strb r0, [r1] - adds r0, r5, 0 - bl sub_8082C18 - mov r1, sp - adds r1, 0x5F - strb r0, [r1] - add r1, sp, 0x60 - adds r0, r5, 0 - bl sub_80820A8 - adds r0, r5, 0 - bl sub_8082BE0 - add r1, sp, 0x64 - strb r0, [r1] - add r7, sp, 0x78 - add r0, sp, 0x8C - mov r8, r0 - add r1, sp, 0x90 - mov r9, r1 - add r2, sp, 0x94 - mov r10, r2 - mov r3, sp - adds r3, 0x3C - str r3, [sp, 0x270] - mov r0, sp - adds r0, 0x98 - str r0, [sp, 0x274] - mov r1, sp - adds r1, 0x9C - str r1, [sp, 0x278] - mov r2, sp - adds r2, 0xA0 - str r2, [sp, 0x27C] - adds r3, 0x6C - str r3, [sp, 0x284] - adds r0, 0x14 - str r0, [sp, 0x288] - adds r1, 0x14 - str r1, [sp, 0x28C] - adds r2, 0x1C - str r2, [sp, 0x290] - adds r3, 0x18 - str r3, [sp, 0x294] - adds r0, 0x18 - str r0, [sp, 0x298] - adds r1, 0x18 - str r1, [sp, 0x29C] - adds r2, 0x14 - str r2, [sp, 0x220] - adds r3, 0x1C - str r3, [sp, 0x224] - adds r0, 0x1C - str r0, [sp, 0x228] - adds r1, 0x1C - str r1, [sp, 0x22C] - adds r2, 0x18 - str r2, [sp, 0x230] - adds r3, 0x10 - str r3, [sp, 0x234] - adds r0, 0x10 - str r0, [sp, 0x238] - adds r1, 0xD - str r1, [sp, 0x23C] - adds r2, 0xA - str r2, [sp, 0x240] - adds r3, 0x7 - str r3, [sp, 0x244] - adds r0, 0x4 - str r0, [sp, 0x248] - adds r1, 0xA - str r1, [sp, 0x25C] - adds r2, 0x3 - str r2, [sp, 0x24C] - adds r3, 0x3 - str r3, [sp, 0x250] - adds r0, 0x3 - str r0, [sp, 0x254] - subs r1, 0x1 - str r1, [sp, 0x258] - adds r2, 0x7 - str r2, [sp, 0x260] - adds r3, 0x7 - str r3, [sp, 0x264] - adds r0, 0x7 - str r0, [sp, 0x268] - adds r1, 0x5 - str r1, [sp, 0x26C] - subs r2, 0x58 - str r2, [sp, 0x280] - add r4, sp, 0x68 - movs r6, 0x3 -_080824DC: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80831F8 - adds r4, 0x4 - subs r6, 0x1 - cmp r6, 0 - bge _080824DC - adds r0, r5, 0 - adds r1, r7, 0 - bl sub_8082CE4 - adds r0, r5, 0 - mov r1, r8 - bl sub_8082D28 - adds r0, r5, 0 - mov r1, r9 - bl sub_8082D28 - adds r0, r5, 0 - bl sub_8082C84 - movs r4, 0 - mov r3, r10 - strb r0, [r3] - adds r0, r5, 0 - ldr r1, [sp, 0x270] - bl sub_8082F80 - adds r0, r5, 0 - bl sub_80831A0 - ldr r1, [sp, 0x274] - str r0, [r1] - adds r0, r5, 0 - bl sub_80831A0 - ldr r2, [sp, 0x278] - str r0, [r2] - adds r0, r5, 0 - bl sub_80831A0 - ldr r3, [sp, 0x27C] - str r0, [r3] - adds r0, r5, 0 - ldr r1, [sp, 0x284] - bl sub_8082D34 - adds r0, r5, 0 - ldr r1, [sp, 0x288] - bl sub_8082D50 - adds r0, r5, 0 - ldr r1, [sp, 0x28C] - bl sub_8082D7C - adds r0, r5, 0 - ldr r1, [sp, 0x290] - bl sub_8082DA8 - adds r0, r5, 0 - ldr r1, [sp, 0x294] - bl sub_8082DC4 - adds r0, r5, 0 - ldr r1, [sp, 0x298] - bl sub_8082DE8 - adds r0, r5, 0 - ldr r1, [sp, 0x29C] - bl sub_8082E04 - adds r0, r5, 0 - ldr r1, [sp, 0x220] - bl sub_8082E38 - adds r0, r5, 0 - ldr r1, [sp, 0x224] - bl sub_8082E6C - adds r0, r5, 0 - ldr r1, [sp, 0x228] - bl sub_8082E88 - adds r0, r5, 0 - ldr r1, [sp, 0x22C] - bl sub_8082E94 - adds r0, r5, 0 - ldr r1, [sp, 0x230] - bl sub_8082EB0 - adds r0, r5, 0 - ldr r1, [sp, 0x234] - bl sub_8082ECC - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [sp, 0x238] - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r2, [sp, 0x23C] - strb r0, [r2] - adds r0, r5, 0 - bl sub_80831DC - ldr r3, [sp, 0x240] - strb r0, [r3] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [sp, 0x244] - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r2, [sp, 0x248] - strb r0, [r2] - adds r0, r5, 0 - bl sub_8083188 - ldr r3, [sp, 0x25C] - strb r0, [r3] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, [sp, 0x24C] - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r2, [sp, 0x250] - strb r0, [r2] - adds r0, r5, 0 - bl sub_80831DC - ldr r3, [sp, 0x254] - strb r0, [r3] - adds r0, r5, 0 - bl sub_8083188 - ldr r1, [sp, 0x258] - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r2, [sp, 0x260] - strb r0, [r2] - adds r0, r5, 0 - bl sub_8083188 - ldr r3, [sp, 0x264] - strb r0, [r3] - adds r0, r5, 0 - bl sub_8083188 - ldr r1, [sp, 0x268] - strb r0, [r1] - adds r0, r5, 0 - bl sub_8082C34 - ldr r2, [sp, 0x26C] - strb r0, [r2] - adds r0, r5, 0 - bl sub_8082C50 - add r1, sp, 0x100 - strb r0, [r1] - adds r0, r5, 0 - bl sub_8082C6C - add r1, sp, 0x104 - str r0, [r1] - add r1, sp, 0x108 - adds r0, r5, 0 - movs r2, 0x5 - bl sub_8083288 - ldr r1, _08082674 - add r1, sp - adds r0, r5, 0 - movs r2, 0x5 - bl sub_8083288 - adds r0, r5, 0 - bl sub_8083188 - movs r1, 0x89 - lsls r1, 1 - add r1, sp - strb r0, [r1] - adds r0, r5, 0 - bl sub_8083188 - b _08082678 - .align 2, 0 -_0808266C: .4byte 0xfffffd60 -_08082670: .4byte gLeaderPointer -_08082674: .4byte 0x0000010d -_08082678: - ldr r1, _08082818 - add r1, sp - strb r0, [r1] - adds r0, r5, 0 - bl sub_8083188 - add r1, sp, 0x114 - lsls r0, 24 - lsrs r0, 24 - str r0, [r1] - add r1, sp, 0x118 - adds r0, r5, 0 - bl sub_8082F1C - add r1, sp, 0x13C - adds r0, r5, 0 - bl sub_8082F48 - add r1, sp, 0x140 - adds r0, r5, 0 - bl sub_8082F48 - adds r0, r5, 0 - bl sub_80831DC - add r1, sp, 0x144 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, _0808281C - add r1, sp - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, _08082820 - add r1, sp - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - movs r1, 0xA3 - lsls r1, 1 - add r1, sp - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - add r1, sp, 0x148 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, _08082824 - add r1, sp - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - movs r1, 0xA5 - lsls r1, 1 - add r1, sp - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, _08082828 - add r1, sp - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - add r1, sp, 0x14C - strb r0, [r1] - adds r0, r5, 0 - bl sub_8083158 - movs r1, 0xA7 - lsls r1, 1 - add r1, sp - strh r0, [r1] - adds r0, r5, 0 - bl sub_8083158 - add r1, sp, 0x150 - strh r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - movs r1, 0xA9 - lsls r1, 1 - add r1, sp - strb r0, [r1] - adds r0, r5, 0 - bl sub_8083188 - ldr r1, _0808282C - add r1, sp - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - add r1, sp, 0x154 - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - ldr r1, _08082830 - add r1, sp - strb r0, [r1] - adds r0, r5, 0 - bl sub_80831DC - movs r1, 0xAB - lsls r1, 1 - add r1, sp - strb r0, [r1] - adds r0, r5, 0 - bl sub_8083188 - add r1, sp, 0x164 - strb r0, [r1] - adds r0, r5, 0 - bl sub_8083188 - ldr r1, _08082834 - add r1, sp - strb r0, [r1] - adds r0, r5, 0 - bl sub_8083188 - movs r1, 0xB3 - lsls r1, 1 - add r1, sp - strb r0, [r1] - adds r0, r5, 0 - bl sub_8083188 - ldr r1, _08082838 - add r1, sp - strb r0, [r1] - adds r0, r5, 0 - bl sub_8083188 - add r1, sp, 0x168 - strb r0, [r1] - adds r0, r5, 0 - bl sub_8083188 - ldr r1, _0808283C - add r1, sp - strb r0, [r1] - add r1, sp, 0x16C - adds r0, r5, 0 - bl sub_80831F8 - adds r0, r5, 0 - bl sub_80831C8 - add r1, sp, 0x174 - str r0, [r1] - adds r0, r5, 0 - bl sub_8083158 - add r1, sp, 0x178 - strh r0, [r1] - adds r0, r5, 0 - bl sub_8083170 - add r1, sp, 0x1F8 - strh r0, [r1] - adds r0, r5, 0 - bl sub_8083170 - movs r1, 0xFD - lsls r1, 1 - add r1, sp - strh r0, [r1] - adds r0, r5, 0 - bl sub_80831A0 - add r1, sp, 0x1FC - str r0, [r1] - adds r0, r5, 0 - bl sub_8082CA0 - ldr r3, [sp, 0x280] - strb r0, [r3] - ldr r0, _08082840 - str r4, [r0] - ldr r0, [sp, 0x214] - cmp r0, 0 - beq _080828BE - ldr r1, [sp, 0x20C] - cmp r1, 0 - beq _08082844 - mov r0, sp - movs r2, 0x2 - ldrsh r0, [r0, r2] - mov r1, sp - movs r3, 0x4 - ldrsh r1, [r1, r3] - ldr r2, [sp, 0x210] - bl sub_80828E0 - b _08082856 - .align 2, 0 -_08082818: .4byte 0x00000113 -_0808281C: .4byte 0x00000145 -_08082820: .4byte 0x00000147 -_08082824: .4byte 0x00000149 -_08082828: .4byte 0x0000014b -_0808282C: .4byte 0x00000153 -_08082830: .4byte 0x00000155 -_08082834: .4byte 0x00000165 -_08082838: .4byte 0x00000167 -_0808283C: .4byte 0x00000169 -_08082840: .4byte gLeaderPointer -_08082844: - mov r0, sp - movs r1, 0x2 - ldrsh r0, [r0, r1] - mov r1, sp - movs r2, 0x4 - ldrsh r1, [r1, r2] - ldr r2, [sp, 0x210] - bl sub_8082A08 -_08082856: - adds r7, r0, 0 - cmp r7, 0 - beq _080828BE - ldr r6, [r7, 0x70] - movs r5, 0x82 - lsls r5, 2 - mov r3, sp - adds r4, r3, r5 - movs r1, 0 - ldrsh r0, [r4, r1] - ldr r3, _080828D4 - add r3, sp - movs r2, 0 - ldrsh r1, [r3, r2] - bl GetTileSafe - ldr r1, [r4] - str r1, [r7, 0x8] - ldr r1, [r4] - str r1, [r7, 0x4] - str r7, [r0, 0x10] - adds r0, r7, 0 - adds r0, 0x20 - movs r4, 0 - add r1, sp, 0x218 - ldrb r1, [r1] - strb r1, [r0] - add r2, sp, 0x21C - ldrh r2, [r2] - strh r2, [r7, 0x26] - adds r0, r6, 0 - mov r1, sp - adds r2, r5, 0 - bl memcpy - ldr r0, _080828D8 - str r4, [r0] - ldrb r0, [r6, 0x7] - cmp r0, 0 - beq _080828B0 - ldr r0, _080828DC - ldrh r1, [r7, 0x4] - strh r1, [r0] - ldrh r1, [r7, 0x6] - strh r1, [r0, 0x2] -_080828B0: - adds r0, r7, 0 - bl LoadIQSkills - adds r0, r7, 0 - movs r1, 0 - bl sub_804535C -_080828BE: - movs r3, 0xA8 - lsls r3, 2 - add sp, r3 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080828D4: .4byte 0x0000020a -_080828D8: .4byte gLeaderPointer -_080828DC: .4byte gUnknown_203B410 - thumb_func_end sub_8082280 - - thumb_func_start sub_80828E0 -sub_80828E0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r5, r2, 0 - lsls r0, 16 - asrs r0, 16 - mov r10, r0 - lsls r1, 16 - asrs r1, 16 - mov r8, r1 - movs r4, 0x1 - negs r4, r4 - mov r0, r8 - bl GetBodySize - lsls r0, 24 - lsrs r6, r0, 24 - movs r3, 0 - movs r0, 0x6 - subs r7, r0, r6 - ldr r0, _08082914 - mov r9, r0 - b _0808291A - .align 2, 0 -_08082914: .4byte gUnknown_202EE70 -_08082918: - adds r3, 0x1 -_0808291A: - cmp r3, r7 - bgt _0808293E - movs r2, 0 - cmp r2, r6 - bge _08082938 - mov r0, r9 - adds r1, r3, r0 - b _08082932 -_0808292A: - adds r1, 0x1 - adds r2, 0x1 - cmp r2, r6 - bge _08082938 -_08082932: - ldrb r0, [r1] - cmp r0, 0 - beq _0808292A -_08082938: - cmp r2, r6 - bne _08082918 - adds r4, r3, 0 -_0808293E: - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - bne _0808294A - movs r0, 0 - b _080829E6 -_0808294A: - ldr r2, _080829F4 - ldr r0, [r2] - lsls r1, r5, 2 - ldr r3, _080829F8 - adds r0, r3 - adds r0, r1 - ldr r7, [r0] - movs r0, 0x1 - mov r9, r0 - str r0, [r7] - adds r0, r7, 0 - adds r0, 0x24 - strb r5, [r0] - lsls r0, r5, 6 - adds r0, r5 - lsls r0, 3 - ldr r1, _080829FC - adds r0, r1 - ldr r1, [r2] - adds r1, r0 - str r1, [r7, 0x70] - movs r5, 0 - mov r3, r10 - strh r3, [r1, 0x2] - ldr r0, [r7, 0x70] - mov r1, r8 - strh r1, [r0, 0x4] - ldr r0, [r7, 0x70] - strb r5, [r0, 0x6] - mov r0, r8 - bl sub_80687D0 - str r0, [r7, 0x64] - lsls r0, r4, 4 - adds r0, 0x40 - adds r1, r7, 0 - adds r1, 0x68 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x7 - strb r0, [r1] - adds r0, r7, 0 - adds r0, 0x6C - strb r5, [r0] - adds r1, 0x1 - movs r0, 0xFF - strb r0, [r1] - adds r0, r7, 0 - adds r0, 0x6D - mov r3, r9 - strb r3, [r0] - adds r0, 0x2 - strb r3, [r0] - movs r0, 0 - str r0, [r7, 0x1C] - bl sub_8045ACC - ldr r0, [r7, 0x70] - ldr r1, _08082A00 - adds r0, r1 - strb r4, [r0] - ldr r0, [r7, 0x70] - movs r3, 0xB4 - lsls r3, 1 - adds r0, r3 - strb r6, [r0] - cmp r6, 0 - beq _080829E4 - ldr r3, _08082A04 - movs r2, 0x1 - adds r1, r6, 0 -_080829D8: - adds r0, r4, r3 - strb r2, [r0] - adds r4, 0x1 - subs r1, 0x1 - cmp r1, 0 - bne _080829D8 -_080829E4: - adds r0, r7, 0 -_080829E6: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080829F4: .4byte gDungeon -_080829F8: .4byte 0x0001357c -_080829FC: .4byte 0x0000069c -_08082A00: .4byte 0x00000167 -_08082A04: .4byte gUnknown_202EE70 - thumb_func_end sub_80828E0 - - thumb_func_start sub_8082A08 -sub_8082A08: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r5, r2, 0 - lsls r0, 16 - asrs r0, 16 - str r0, [sp] - lsls r1, 16 - asrs r1, 16 - mov r9, r1 - movs r0, 0x1 - negs r0, r0 - mov r8, r0 - mov r0, r9 - bl GetBodySize - lsls r0, 24 - lsrs r6, r0, 24 - movs r3, 0 - movs r0, 0x10 - subs r4, r0, r6 - ldr r7, _08082A3C - b _08082A42 - .align 2, 0 -_08082A3C: .4byte gUnknown_202EE76 -_08082A40: - adds r3, 0x1 -_08082A42: - cmp r3, r4 - bgt _08082A64 - movs r2, 0 - cmp r2, r6 - bge _08082A5E - adds r1, r3, r7 - b _08082A58 -_08082A50: - adds r1, 0x1 - adds r2, 0x1 - cmp r2, r6 - bge _08082A5E -_08082A58: - ldrb r0, [r1] - cmp r0, 0 - beq _08082A50 -_08082A5E: - cmp r2, r6 - bne _08082A40 - mov r8, r3 -_08082A64: - movs r0, 0x1 - negs r0, r0 - cmp r8, r0 - bne _08082A70 - movs r0, 0 - b _08082B1C -_08082A70: - ldr r2, _08082B2C - ldr r0, [r2] - lsls r1, r5, 2 - ldr r3, _08082B30 - adds r0, r3 - adds r0, r1 - ldr r7, [r0] - movs r4, 0x1 - str r4, [r7] - adds r0, r7, 0 - adds r0, 0x24 - movs r1, 0 - mov r10, r1 - strb r5, [r0] - subs r0, 0x2 - mov r3, r10 - strb r3, [r0] - lsls r0, r5, 6 - adds r0, r5 - lsls r0, 3 - ldr r1, _08082B34 - adds r0, r1 - ldr r1, [r2] - adds r1, r0 - str r1, [r7, 0x70] - movs r5, 0 - mov r2, sp - ldrh r2, [r2] - strh r2, [r1, 0x2] - ldr r0, [r7, 0x70] - mov r3, r9 - strh r3, [r0, 0x4] - ldr r0, [r7, 0x70] - strb r4, [r0, 0x6] - mov r0, r9 - bl sub_80687D0 - str r0, [r7, 0x64] - mov r1, r8 - lsls r0, r1, 4 - adds r0, 0xA0 - adds r1, r7, 0 - adds r1, 0x68 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x7 - strb r0, [r1] - adds r0, r7, 0 - adds r0, 0x6C - strb r5, [r0] - adds r1, 0x1 - movs r0, 0xFF - strb r0, [r1] - adds r0, r7, 0 - adds r0, 0x6D - strb r4, [r0] - adds r0, 0x2 - strb r4, [r0] - mov r2, r10 - str r2, [r7, 0x1C] - ldr r0, [r7, 0x70] - ldr r3, _08082B38 - adds r0, r3 - mov r4, r8 - strb r4, [r0] - ldr r0, [r7, 0x70] - movs r1, 0xB4 - lsls r1, 1 - adds r0, r1 - strb r6, [r0] - cmp r6, 0 - beq _08082B16 - ldr r3, _08082B3C - movs r2, 0x1 - adds r1, r6, 0 -_08082B06: - mov r4, r8 - adds r0, r4, r3 - strb r2, [r0] - movs r0, 0x1 - add r8, r0 - subs r1, 0x1 - cmp r1, 0 - bne _08082B06 -_08082B16: - bl sub_8045ACC - adds r0, r7, 0 -_08082B1C: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08082B2C: .4byte gDungeon -_08082B30: .4byte 0x0001358c -_08082B34: .4byte 0x00000ebc -_08082B38: .4byte 0x00000167 -_08082B3C: .4byte gUnknown_202EE76 - thumb_func_end sub_8082A08 - - thumb_func_start sub_8082B40 -sub_8082B40: - push {r4-r6,lr} - sub sp, 0x4 - movs r6, 0 -_08082B46: - ldr r0, _08082BB8 - ldr r0, [r0] - lsls r1, r6, 2 - ldr r2, _08082BBC - adds r0, r2 - adds r0, r1 - ldr r5, [r0] - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08082BA8 - ldr r4, [r5, 0x70] - movs r1, 0x4 - ldrsh r0, [r4, r1] - bl sub_80687D0 - str r0, [r5, 0x64] - adds r0, r5, 0 - bl sub_806CEBC - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl sub_806CCB4 - ldr r0, [r5, 0x4] - str r0, [sp] - adds r0, r4, 0 - adds r0, 0x98 - ldr r0, [r0] - movs r2, 0x4 - ldrsh r1, [r4, r2] - mov r2, sp - movs r3, 0x3 - bl AddPokemonDungeonSprite - movs r1, 0x4 - ldrsh r0, [r5, r1] - movs r2, 0x6 - ldrsh r1, [r5, r2] - bl GetTileSafe - ldrb r1, [r0, 0x9] - adds r0, r5, 0 - adds r0, 0x25 - strb r1, [r0] -_08082BA8: - adds r6, 0x1 - cmp r6, 0x13 - ble _08082B46 - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08082BB8: .4byte gDungeon -_08082BBC: .4byte 0x000135cc - thumb_func_end sub_8082B40 - - thumb_func_start sub_8082BC0 -sub_8082BC0: - push {lr} - sub sp, 0x4 - mov r2, sp - movs r1, 0 - strh r1, [r2] - mov r1, sp - movs r2, 0x2 - bl sub_8082FE0 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_8082BC0 - - thumb_func_start sub_8082BE0 -sub_8082BE0: - push {lr} - sub sp, 0x4 - mov r2, sp - movs r1, 0 - strb r1, [r2] - mov r1, sp - movs r2, 0x1 - bl sub_8082FE0 - mov r0, sp - ldrb r0, [r0] - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_8082BE0 - - thumb_func_start sub_8082BFC -sub_8082BFC: - push {lr} - sub sp, 0x4 - mov r2, sp - movs r1, 0 - strb r1, [r2] - mov r1, sp - movs r2, 0x1 - bl sub_8082FE0 - mov r0, sp - ldrb r0, [r0] - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_8082BFC - - thumb_func_start sub_8082C18 -sub_8082C18: - push {lr} - sub sp, 0x4 - mov r2, sp - movs r1, 0 - strb r1, [r2] - mov r1, sp - movs r2, 0x1 - bl sub_8082FE0 - mov r0, sp - ldrb r0, [r0] - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_8082C18 - - thumb_func_start sub_8082C34 -sub_8082C34: - push {lr} - sub sp, 0x4 - mov r2, sp - movs r1, 0 - strb r1, [r2] - mov r1, sp - movs r2, 0x1 - bl sub_8082FE0 - mov r0, sp - ldrb r0, [r0] - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_8082C34 - - thumb_func_start sub_8082C50 -sub_8082C50: - push {lr} - sub sp, 0x4 - mov r2, sp - movs r1, 0 - strb r1, [r2] - mov r1, sp - movs r2, 0x1 - bl sub_8082FE0 - mov r0, sp - ldrb r0, [r0] - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_8082C50 - - thumb_func_start sub_8082C6C -sub_8082C6C: - push {lr} - sub sp, 0x4 - movs r1, 0 - str r1, [sp] - mov r1, sp - movs r2, 0x4 - bl sub_8082FE0 - ldr r0, [sp] - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_8082C6C - - thumb_func_start sub_8082C84 -sub_8082C84: - push {lr} - sub sp, 0x4 - mov r2, sp - movs r1, 0 - strb r1, [r2] - mov r1, sp - movs r2, 0x1 - bl sub_8082FE0 - mov r0, sp - ldrb r0, [r0] - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_8082C84 - - thumb_func_start sub_8082CA0 -sub_8082CA0: - push {lr} - sub sp, 0x4 - mov r2, sp - movs r1, 0 - strb r1, [r2] - mov r1, sp - movs r2, 0x1 - bl sub_8082FE0 - mov r0, sp - ldrb r0, [r0] - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_8082CA0 - - thumb_func_start sub_8082CBC -sub_8082CBC: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r0, 0 - strh r0, [r4] - adds r1, r4, 0x2 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FE0 - movs r0, 0x7 - strb r0, [r4, 0x3] - adds r4, 0x14 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80831F8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082CBC - - thumb_func_start sub_8082CE4 -sub_8082CE4: - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r0, r5, 0 - bl sub_80831DC - movs r6, 0 - strb r0, [r4, 0x1] - adds r0, r5, 0 - bl sub_80831DC - strb r0, [r4, 0x2] - adds r0, r5, 0 - bl sub_80831DC - strb r0, [r4, 0x3] - adds r0, r5, 0 - bl sub_8083158 - strh r0, [r4, 0x4] - str r6, [r4, 0x8] - str r6, [r4, 0xC] - adds r4, 0x10 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80831F8 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8082CE4 - - thumb_func_start sub_8082D28 -sub_8082D28: - push {lr} - movs r2, 0x3 - bl sub_8082FE0 - pop {r0} - bx r0 - thumb_func_end sub_8082D28 - - thumb_func_start sub_8082D34 -sub_8082D34: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x1] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082D34 - - thumb_func_start sub_8082D50 -sub_8082D50: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x1] - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x2] - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x3] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082D50 - - thumb_func_start sub_8082D7C -sub_8082D7C: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x8] - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x9] - adds r0, r4, 0 - bl sub_80831A0 - str r0, [r5, 0x4] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082D7C - - thumb_func_start sub_8082DA8 -sub_8082DA8: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x1] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082DA8 - - thumb_func_start sub_8082DC4 -sub_8082DC4: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x1] - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x2] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082DC4 - - thumb_func_start sub_8082DE8 -sub_8082DE8: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x1] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082DE8 - - thumb_func_start sub_8082E04 -sub_8082E04: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r0, r4, 0 - bl sub_80831DC - strb r0, [r5, 0x1] - adds r0, r4, 0 - bl sub_80831DC - strb r0, [r5, 0x2] - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x3] - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x4] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082E04 - - thumb_func_start sub_8082E38 -sub_8082E38: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r0, r4, 0 - bl sub_80831A0 - str r0, [r5, 0x4] - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x8] - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x9] - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0xA] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082E38 - - thumb_func_start sub_8082E6C -sub_8082E6C: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x1] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082E6C - - thumb_func_start sub_8082E88 -sub_8082E88: - push {lr} - movs r2, 0x1 - bl sub_8082FE0 - pop {r0} - bx r0 - thumb_func_end sub_8082E88 - - thumb_func_start sub_8082E94 -sub_8082E94: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x1] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082E94 - - thumb_func_start sub_8082EB0 -sub_8082EB0: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x1] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082EB0 - - thumb_func_start sub_8082ECC -sub_8082ECC: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x1] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082ECC - - thumb_func_start sub_8082EE8 -sub_8082EE8: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8083188 - strb r0, [r5] - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x1] - adds r1, r5, 0x2 - adds r0, r4, 0 - movs r2, 0x2 - bl sub_8082FE0 - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x4] - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x5] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082EE8 - - thumb_func_start sub_8082F1C -sub_8082F1C: - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - adds r4, r7, 0 - movs r5, 0x3 -_08082F26: - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_8082EE8 - adds r4, 0x8 - subs r5, 0x1 - cmp r5, 0 - bge _08082F26 - adds r0, r6, 0 - bl sub_8083188 - adds r1, r7, 0 - adds r1, 0x20 - strb r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8082F1C - - thumb_func_start sub_8082F48 -sub_8082F48: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8083170 - strh r0, [r5] - adds r0, r4, 0 - bl sub_8083170 - strh r0, [r5, 0x2] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082F48 - - thumb_func_start sub_8082F64 -sub_8082F64: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8083188 - strb r0, [r5] - adds r0, r4, 0 - bl sub_8083188 - strb r0, [r5, 0x1] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082F64 - - thumb_func_start sub_8082F80 -sub_8082F80: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8083170 - strh r0, [r5] - adds r0, r4, 0 - bl sub_8082BFC - strb r0, [r5, 0x2] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8082F80 - - thumb_func_start sub_8082F9C -sub_8082F9C: - str r1, [r0] - movs r3, 0 - str r3, [r0, 0x8] - adds r1, r2 - str r1, [r0, 0x4] - bx lr - thumb_func_end sub_8082F9C - - thumb_func_start sub_8082FA8 -sub_8082FA8: - push {r4,lr} - adds r3, r0, 0 - adds r4, r1, 0 - cmp r2, 0 - beq _08082FCC -_08082FB2: - ldr r1, [r3] - ldrb r0, [r4] - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x1 - str r0, [r3] - adds r4, 0x1 - subs r2, 0x1 - ldr r0, [r3, 0x8] - adds r0, 0x1 - str r0, [r3, 0x8] - cmp r2, 0 - bne _08082FB2 -_08082FCC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8082FA8 - - thumb_func_start sub_8082FD4 -sub_8082FD4: - str r1, [r0] - movs r3, 0 - str r3, [r0, 0x8] - adds r1, r2 - str r1, [r0, 0x4] - bx lr - thumb_func_end sub_8082FD4 - - thumb_func_start sub_8082FE0 -sub_8082FE0: - push {r4,lr} - adds r3, r0, 0 - adds r4, r1, 0 - cmp r2, 0 - beq _08083002 -_08082FEA: - ldr r1, [r3] - ldrb r0, [r1] - strb r0, [r4] - adds r1, 0x1 - str r1, [r3] - adds r4, 0x1 - subs r2, 0x1 - ldr r0, [r3, 0x8] - adds r0, 0x1 - str r0, [r3, 0x8] - cmp r2, 0 - bne _08082FEA -_08083002: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8082FE0 - .align 2, 0 diff --git a/asm/code_8080CF0.s b/asm/code_8080CF0.s new file mode 100644 index 000000000..94f5ebe24 --- /dev/null +++ b/asm/code_8080CF0.s @@ -0,0 +1,3369 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_8081454 +sub_8081454: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r7, r0, 0 + ldr r1, _08081600 + bl sub_808300C + ldr r4, _08081604 + ldr r0, [r4] + ldr r1, _08081608 + adds r0, r1 + ldrb r1, [r0] + adds r0, r7, 0 + bl sub_80830B4 + ldr r0, [r4] + ldr r2, _0808160C + adds r0, r2 + ldrb r1, [r0] + adds r0, r7, 0 + bl sub_80830B4 + ldr r0, [r4] + ldr r1, _08081610 + adds r0, r1 + ldrb r1, [r0] + adds r0, r7, 0 + bl sub_80830B4 + ldr r0, [r4] + ldr r2, _08081614 + adds r0, r2 + ldrb r1, [r0] + adds r0, r7, 0 + bl sub_80830B4 + ldr r0, [r4] + ldr r1, _08081618 + adds r0, r1 + ldrb r1, [r0] + adds r0, r7, 0 + bl sub_8083060 + ldr r0, [r4] + ldr r2, _0808161C + adds r0, r2 + ldrb r1, [r0] + adds r0, r7, 0 + bl sub_8083060 + ldr r0, [r4] + ldr r1, _08081620 + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r0, r7, 0 + bl sub_8083048 + ldr r0, [r4] + ldr r1, _08081624 + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r0, r7, 0 + bl sub_8083048 + ldr r0, [r4] + ldr r1, _08081628 + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r0, r7, 0 + bl sub_8083048 + ldr r0, [r4] + ldr r1, _0808162C + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r0, r7, 0 + bl sub_8083048 + ldr r0, [r4] + ldr r1, _08081630 + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r0, r7, 0 + bl sub_8083048 + movs r1, 0 + mov r9, r4 +_08081510: + lsls r0, r1, 2 + adds r2, r1, 0x1 + mov r8, r2 + adds r0, r1 + lsls r0, 2 + adds r0, r1 + lsls r0, 6 + ldr r1, _08081634 + adds r6, r0, r1 + movs r5, 0 + movs r4, 0x37 +_08081526: + mov r2, r9 + ldr r1, [r2] + adds r1, r6 + adds r1, r5 + adds r0, r7, 0 + bl sub_8081B60 + adds r5, 0x18 + subs r4, 0x1 + cmp r4, 0 + bge _08081526 + mov r1, r8 + cmp r1, 0x1F + ble _08081510 + ldr r4, _08081604 + ldr r1, [r4] + ldr r0, _08081638 + adds r1, r0 + adds r0, r7, 0 + bl sub_80830D8 + ldr r1, [r4] + ldr r2, _0808163C + adds r1, r2 + adds r0, r7, 0 + bl sub_80830D8 + ldr r6, _08081640 + movs r5, 0x7 +_08081560: + ldr r1, [r4] + adds r1, r6 + adds r0, r7, 0 + bl sub_80830D8 + adds r6, 0x4 + subs r5, 0x1 + cmp r5, 0 + bge _08081560 + ldr r4, _08081604 + ldr r1, [r4] + ldr r0, _08081644 + adds r1, r0 + adds r0, r7, 0 + bl sub_80830F8 + ldr r1, [r4] + ldr r2, _08081648 + adds r1, r2 + adds r0, r7, 0 + bl sub_80830F8 + ldr r1, [r4] + ldr r0, _0808164C + adds r1, r0 + adds r0, r7, 0 + bl sub_808312C + movs r1, 0 + mov r10, r4 +_0808159C: + movs r4, 0 + adds r2, r1, 0x1 + mov r8, r2 + lsls r0, r1, 1 + lsls r2, r1, 3 + mov r9, r2 + adds r0, r1 + lsls r0, 6 + ldr r1, _08081650 + adds r6, r0, r1 + movs r5, 0 +_080815B2: + mov r2, r10 + ldr r1, [r2] + adds r1, r6 + adds r1, r5 + adds r0, r7, 0 + bl sub_8081B60 + mov r1, r10 + ldr r0, [r1] + mov r2, r9 + adds r1, r4, r2 + ldr r2, _08081654 + adds r0, r2 + adds r0, r1 + ldrb r1, [r0] + adds r0, r7, 0 + bl sub_8083060 + adds r5, 0x18 + adds r4, 0x1 + cmp r4, 0x7 + ble _080815B2 + mov r1, r8 + cmp r1, 0x7 + ble _0808159C + ldr r0, _08081604 + ldr r1, [r0] + ldr r0, _08081658 + adds r1, r0 + adds r0, r7, 0 + bl sub_8081B94 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08081600: .4byte gUnknown_81071E0 +_08081604: .4byte gDungeon +_08081608: .4byte 0x00003a08 +_0808160C: .4byte 0x00003a09 +_08081610: .4byte 0x00003a0a +_08081614: .4byte 0x00003a0b +_08081618: .4byte 0x00003a0c +_0808161C: .4byte 0x00003a0d +_08081620: .4byte 0x00003a0e +_08081624: .4byte 0x00003a10 +_08081628: .4byte 0x00003a12 +_0808162C: .4byte 0x00003a14 +_08081630: .4byte 0x00003a16 +_08081634: .4byte 0x00003a18 +_08081638: .4byte 0x0000e218 +_0808163C: .4byte 0x0000e21c +_08081640: .4byte 0x0000e220 +_08081644: .4byte 0x0000e240 +_08081648: .4byte 0x0000e250 +_0808164C: .4byte 0x0000e260 +_08081650: .4byte 0x0000e27c +_08081654: .4byte 0x0000e87c +_08081658: .4byte 0x0000e264 + thumb_func_end sub_8081454 + + thumb_func_start sub_808165C +sub_808165C: + push {r4,r5,lr} + adds r5, r0, 0 + ldr r1, _08081708 + bl sub_808300C + ldr r4, _0808170C + ldr r0, [r4] + ldr r1, _08081710 + adds r0, r1 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_8083060 + ldr r0, [r4] + ldr r1, _08081714 + adds r0, r1 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_8083060 + ldr r0, [r4] + ldr r1, _08081718 + adds r0, r1 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_80830B4 + ldr r0, [r4] + ldr r1, _0808171C + adds r0, r1 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_80830B4 + ldr r0, [r4] + ldr r1, _08081720 + adds r0, r1 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_80830B4 + ldr r0, [r4] + ldr r1, _08081724 + adds r0, r1 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_80830B4 + ldr r0, [r4] + ldr r1, _08081728 + adds r0, r1 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_80830B4 + ldr r0, [r4] + ldr r1, _0808172C + adds r0, r1 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_80830B4 + ldr r0, [r4] + ldr r1, _08081730 + adds r0, r1 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_80830B4 + ldr r0, [r4] + ldr r1, _08081734 + adds r0, r1 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_80830B4 + ldr r0, [r4] + ldr r1, _08081738 + adds r0, r1 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_80830B4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08081708: .4byte gUnknown_81071E0 +_0808170C: .4byte gDungeon +_08081710: .4byte 0x00018208 +_08081714: .4byte 0x00018209 +_08081718: .4byte 0x0001820a +_0808171C: .4byte 0x0001820b +_08081720: .4byte 0x0001820c +_08081724: .4byte 0x0001820d +_08081728: .4byte 0x0001820e +_0808172C: .4byte 0x0001820f +_08081730: .4byte 0x00018210 +_08081734: .4byte 0x00018211 +_08081738: .4byte 0x00018213 + thumb_func_end sub_808165C + + thumb_func_start sub_808173C +sub_808173C: + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _08081778 + ldr r0, [r4] + ldr r1, _0808177C + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r0, r5, 0 + bl sub_8083048 + ldr r0, [r4] + ldr r1, _08081780 + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r0, r5, 0 + bl sub_8083048 + ldr r0, [r4] + ldr r1, _08081784 + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r0, r5, 0 + bl sub_8083048 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08081778: .4byte gDungeon +_0808177C: .4byte 0x0001ced6 +_08081780: .4byte 0x0001ced8 +_08081784: .4byte 0x0001ceda + thumb_func_end sub_808173C + + thumb_func_start sub_8081788 +sub_8081788: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8082FA8 + adds r1, r5, 0x1 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_8082FA8 + adds r5, 0x2 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_8082FA8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8081788 + + thumb_func_start sub_80817B0 +sub_80817B0: + push {lr} + sub sp, 0x4 + mov r2, sp + strb r1, [r2] + mov r1, sp + movs r2, 0x1 + bl sub_8082FA8 + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_80817B0 + + thumb_func_start sub_80817C8 +sub_80817C8: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r1, r4, 0x2 + movs r2, 0x1 + bl sub_8082FA8 + adds r1, r4, 0 + adds r1, 0x14 + adds r0, r5, 0 + movs r2, 0x1 + bl sub_8082FA8 + adds r4, 0x16 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_8082FA8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80817C8 + + thumb_func_start sub_80817F4 +sub_80817F4: + push {lr} + sub sp, 0x4 + mov r2, sp + strh r1, [r2] + mov r1, sp + movs r2, 0x2 + bl sub_8082FA8 + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_80817F4 + + thumb_func_start sub_808180C +sub_808180C: + push {lr} + sub sp, 0x4 + mov r2, sp + strb r1, [r2] + mov r1, sp + movs r2, 0x1 + bl sub_8082FA8 + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_808180C + + thumb_func_start sub_8081824 +sub_8081824: + push {lr} + sub sp, 0x4 + mov r2, sp + strb r1, [r2] + mov r1, sp + movs r2, 0x1 + bl sub_8082FA8 + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_8081824 + + thumb_func_start sub_808183C +sub_808183C: + push {lr} + sub sp, 0x4 + mov r2, sp + strb r1, [r2] + mov r1, sp + movs r2, 0x1 + bl sub_8082FA8 + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_808183C + + thumb_func_start sub_8081854 +sub_8081854: + push {lr} + sub sp, 0x4 + mov r2, sp + strb r1, [r2] + mov r1, sp + movs r2, 0x1 + bl sub_8082FA8 + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_8081854 + + thumb_func_start sub_808186C +sub_808186C: + push {lr} + sub sp, 0x4 + str r1, [sp] + mov r1, sp + movs r2, 0x4 + bl sub_8082FA8 + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_808186C + + thumb_func_start sub_8081880 +sub_8081880: + push {lr} + sub sp, 0x4 + mov r2, sp + strb r1, [r2] + mov r1, sp + movs r2, 0x1 + bl sub_8082FA8 + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_8081880 + + thumb_func_start sub_8081898 +sub_8081898: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r0, 0 + ldrsh r1, [r4, r0] + adds r0, r5, 0 + bl sub_8083048 + ldrb r1, [r4, 0x2] + adds r0, r5, 0 + bl sub_808180C + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8081898 + + thumb_func_start sub_80818B8 +sub_80818B8: + push {lr} + lsls r1, 24 + lsrs r1, 24 + bl sub_8083060 + pop {r0} + bx r0 + thumb_func_end sub_80818B8 + + thumb_func_start sub_80818C8 +sub_80818C8: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r1, [r4] + bl sub_8083060 + ldrb r1, [r4, 0x1] + adds r0, r5, 0 + bl sub_8083060 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80818C8 + + thumb_func_start sub_80818E4 +sub_80818E4: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8082FA8 + ldrb r1, [r4, 0x1] + adds r0, r5, 0 + bl sub_80830B4 + ldrb r1, [r4, 0x2] + adds r0, r5, 0 + bl sub_80830B4 + ldrb r1, [r4, 0x3] + adds r0, r5, 0 + bl sub_80830B4 + ldrh r1, [r4, 0x4] + adds r0, r5, 0 + bl sub_8083030 + adds r4, 0x10 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80830D8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80818E4 + + thumb_func_start sub_8081920 +sub_8081920: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8082FA8 + ldrb r1, [r4, 0x1] + adds r0, r5, 0 + bl sub_8083060 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8081920 + + thumb_func_start sub_808193C +sub_808193C: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8082FA8 + ldrb r1, [r4, 0x1] + adds r0, r5, 0 + bl sub_8083060 + ldrb r1, [r4, 0x2] + adds r0, r5, 0 + bl sub_8083060 + ldrb r1, [r4, 0x3] + adds r0, r5, 0 + bl sub_8083060 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_808193C + + thumb_func_start sub_8081968 +sub_8081968: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8082FA8 + ldrb r1, [r4, 0x8] + adds r0, r5, 0 + bl sub_8083060 + ldrb r1, [r4, 0x9] + adds r0, r5, 0 + bl sub_8083060 + ldr r1, [r4, 0x4] + adds r0, r5, 0 + bl sub_8083078 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8081968 + + thumb_func_start sub_8081994 +sub_8081994: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8082FA8 + ldrb r1, [r4, 0x1] + adds r0, r5, 0 + bl sub_8083060 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8081994 + + thumb_func_start sub_80819B0 +sub_80819B0: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8082FA8 + ldrb r1, [r4, 0x1] + adds r0, r5, 0 + bl sub_8083060 + ldrb r1, [r4, 0x2] + adds r0, r5, 0 + bl sub_8083060 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80819B0 + + thumb_func_start sub_80819D4 +sub_80819D4: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8082FA8 + ldrb r1, [r4, 0x1] + adds r0, r5, 0 + bl sub_8083060 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80819D4 + + thumb_func_start sub_80819F0 +sub_80819F0: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8082FA8 + ldrb r1, [r4, 0x1] + adds r0, r5, 0 + bl sub_80830B4 + ldrb r1, [r4, 0x2] + adds r0, r5, 0 + bl sub_80830B4 + ldrb r1, [r4, 0x3] + adds r0, r5, 0 + bl sub_8083060 + ldrb r1, [r4, 0x4] + adds r0, r5, 0 + bl sub_8083060 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80819F0 + + thumb_func_start sub_8081A24 +sub_8081A24: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8082FA8 + ldr r1, [r4, 0x4] + adds r0, r5, 0 + bl sub_8083078 + ldrb r1, [r4, 0x8] + adds r0, r5, 0 + bl sub_8083060 + ldrb r1, [r4, 0x9] + adds r0, r5, 0 + bl sub_8083060 + ldrb r1, [r4, 0xA] + adds r0, r5, 0 + bl sub_8083060 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8081A24 + + thumb_func_start sub_8081A58 +sub_8081A58: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8082FA8 + ldrb r1, [r4, 0x1] + adds r0, r5, 0 + bl sub_8083060 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8081A58 + + thumb_func_start sub_8081A74 +sub_8081A74: + push {lr} + movs r2, 0x1 + bl sub_8082FA8 + pop {r0} + bx r0 + thumb_func_end sub_8081A74 + + thumb_func_start sub_8081A80 +sub_8081A80: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8082FA8 + ldrb r1, [r4, 0x1] + adds r0, r5, 0 + bl sub_8083060 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8081A80 + + thumb_func_start sub_8081A9C +sub_8081A9C: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8082FA8 + ldrb r1, [r4, 0x1] + adds r0, r5, 0 + bl sub_8083060 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8081A9C + + thumb_func_start sub_8081AB8 +sub_8081AB8: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8082FA8 + ldrb r1, [r4, 0x1] + adds r0, r5, 0 + bl sub_8083060 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8081AB8 + + thumb_func_start sub_8081AD4 +sub_8081AD4: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r1, [r4] + bl sub_8083060 + ldrb r1, [r4, 0x1] + adds r0, r5, 0 + bl sub_8083060 + adds r1, r4, 0x2 + adds r0, r5, 0 + movs r2, 0x2 + bl sub_8082FA8 + ldrb r1, [r4, 0x4] + adds r0, r5, 0 + bl sub_8083060 + ldrb r1, [r4, 0x5] + adds r0, r5, 0 + bl sub_8083060 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8081AD4 + + thumb_func_start sub_8081B08 +sub_8081B08: + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + adds r4, r7, 0 + movs r5, 0x3 +_08081B12: + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8081AD4 + adds r4, 0x8 + subs r5, 0x1 + cmp r5, 0 + bge _08081B12 + adds r0, r7, 0 + adds r0, 0x20 + ldrb r1, [r0] + adds r0, r6, 0 + bl sub_8083060 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8081B08 + + thumb_func_start sub_8081B34 +sub_8081B34: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r0, 0 + ldrsh r1, [r4, r0] + adds r0, r5, 0 + bl sub_8083048 + movs r0, 0x2 + ldrsh r1, [r4, r0] + adds r0, r5, 0 + bl sub_8083048 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8081B34 + + thumb_func_start sub_8081B54 +sub_8081B54: + push {lr} + movs r2, 0x3 + bl sub_8082FA8 + pop {r0} + bx r0 + thumb_func_end sub_8081B54 + + thumb_func_start sub_8081B60 +sub_8081B60: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrh r1, [r4] + bl sub_8083030 + ldrh r1, [r4, 0x4] + adds r0, r5, 0 + bl sub_8083030 + adds r1, r4, 0 + adds r1, 0x9 + adds r0, r5, 0 + movs r2, 0x1 + bl sub_8082FA8 + adds r4, 0xE + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_8082FA8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8081B60 + + thumb_func_start sub_8081B94 +sub_8081B94: + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8082FA8 + adds r1, r5, 0x1 + adds r0, r6, 0 + movs r2, 0x1 + bl sub_8082FA8 + movs r4, 0 +_08081BAC: + adds r0, r5, 0x3 + adds r0, r4 + ldrb r1, [r0] + adds r0, r6, 0 + bl sub_8083060 + adds r0, r5, 0 + adds r0, 0xB + adds r0, r4 + ldrb r1, [r0] + adds r0, r6, 0 + bl sub_8083060 + adds r4, 0x1 + cmp r4, 0x7 + ble _08081BAC + ldrb r1, [r5, 0x2] + adds r0, r6, 0 + bl sub_8083060 + ldrb r1, [r5, 0x13] + adds r0, r6, 0 + bl sub_8083060 + ldrb r1, [r5, 0x14] + adds r0, r6, 0 + bl sub_8083060 + ldrb r1, [r5, 0x15] + adds r0, r6, 0 + bl sub_80830B4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8081B94 + + thumb_func_start sub_8081BF4 +sub_8081BF4: + push {lr} + sub sp, 0x10 + adds r3, r0, 0 + adds r2, r1, 0 + mov r0, sp + adds r1, r3, 0 + bl sub_8082FD4 + add r1, sp, 0xC + mov r0, sp + movs r2, 0x4 + bl sub_8082FE0 + mov r0, sp + bl sub_8081C50 + mov r0, sp + bl sub_8081C7C + mov r0, sp + bl sub_8081F2C + mov r0, sp + bl sub_808201C + mov r0, sp + bl sub_8082060 + mov r0, sp + bl sub_80820D8 + mov r0, sp + bl sub_808217C + ldr r1, _08081C4C + mov r0, sp + bl sub_8083018 + mov r0, sp + bl nullsub_98 + add sp, 0x10 + pop {r0} + bx r0 + .align 2, 0 +_08081C4C: .4byte gUnknown_81071D4 + thumb_func_end sub_8081BF4 + + thumb_func_start sub_8081C50 +sub_8081C50: + push {r4,lr} + adds r4, r0, 0 + ldr r1, _08081C70 + bl sub_8083018 + ldr r0, _08081C74 + ldr r1, [r0] + ldr r0, _08081C78 + adds r1, r0 + adds r0, r4, 0 + movs r2, 0x58 + bl sub_8082FE0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08081C70: .4byte gUnknown_81071E0 +_08081C74: .4byte gDungeon +_08081C78: .4byte 0x00000644 + thumb_func_end sub_8081C50 + + thumb_func_start sub_8081C7C +sub_8081C7C: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r7, r0, 0 + ldr r1, _08081E20 + bl sub_8083018 + adds r0, r7, 0 + bl sub_80831DC + ldr r4, _08081E24 + ldr r1, [r4] + ldr r2, _08081E28 + adds r1, r2 + strb r0, [r1] + adds r0, r7, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r3, _08081E2C + adds r1, r3 + strb r0, [r1] + adds r0, r7, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _08081E30 + adds r1, r2 + strb r0, [r1] + adds r0, r7, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r3, _08081E34 + adds r1, r3 + strb r0, [r1] + adds r0, r7, 0 + bl sub_8083188 + ldr r1, [r4] + ldr r2, _08081E38 + adds r1, r2 + strb r0, [r1] + adds r0, r7, 0 + bl sub_8083188 + ldr r1, [r4] + ldr r3, _08081E3C + adds r1, r3 + strb r0, [r1] + adds r0, r7, 0 + bl sub_8083170 + ldr r1, [r4] + ldr r2, _08081E40 + adds r1, r2 + strh r0, [r1] + adds r0, r7, 0 + bl sub_8083170 + ldr r1, [r4] + ldr r3, _08081E44 + adds r1, r3 + strh r0, [r1] + adds r0, r7, 0 + bl sub_8083170 + ldr r1, [r4] + ldr r2, _08081E48 + adds r1, r2 + strh r0, [r1] + adds r0, r7, 0 + bl sub_8083170 + ldr r1, [r4] + ldr r3, _08081E4C + adds r1, r3 + strh r0, [r1] + adds r0, r7, 0 + bl sub_8083170 + ldr r1, [r4] + ldr r2, _08081E50 + adds r1, r2 + strh r0, [r1] + movs r1, 0 + mov r9, r4 +_08081D2E: + lsls r0, r1, 2 + adds r3, r1, 0x1 + mov r8, r3 + adds r0, r1 + lsls r0, 2 + adds r0, r1 + lsls r0, 6 + ldr r1, _08081E54 + adds r6, r0, r1 + movs r5, 0 + movs r4, 0x37 +_08081D44: + mov r2, r9 + ldr r1, [r2] + adds r1, r6 + adds r1, r5 + adds r0, r7, 0 + bl sub_8081E7C + adds r5, 0x18 + subs r4, 0x1 + cmp r4, 0 + bge _08081D44 + mov r1, r8 + cmp r1, 0x1F + ble _08081D2E + ldr r4, _08081E24 + ldr r1, [r4] + ldr r3, _08081E58 + adds r1, r3 + adds r0, r7, 0 + bl sub_80831F8 + ldr r1, [r4] + ldr r0, _08081E5C + adds r1, r0 + adds r0, r7, 0 + bl sub_80831F8 + ldr r6, _08081E60 + movs r5, 0x7 +_08081D7E: + ldr r1, [r4] + adds r1, r6 + adds r0, r7, 0 + bl sub_80831F8 + adds r6, 0x4 + subs r5, 0x1 + cmp r5, 0 + bge _08081D7E + ldr r4, _08081E24 + ldr r1, [r4] + ldr r2, _08081E64 + adds r1, r2 + adds r0, r7, 0 + bl sub_8083220 + ldr r1, [r4] + ldr r3, _08081E68 + adds r1, r3 + adds r0, r7, 0 + bl sub_8083220 + ldr r1, [r4] + ldr r0, _08081E6C + adds r1, r0 + adds r0, r7, 0 + bl sub_8083260 + movs r1, 0 + mov r10, r4 +_08081DBA: + movs r4, 0 + adds r2, r1, 0x1 + mov r8, r2 + lsls r0, r1, 1 + lsls r3, r1, 3 + mov r9, r3 + adds r0, r1 + lsls r0, 6 + ldr r1, _08081E70 + adds r6, r0, r1 + movs r5, 0 +_08081DD0: + mov r2, r10 + ldr r1, [r2] + adds r1, r6 + adds r1, r5 + adds r0, r7, 0 + bl sub_8081E7C + adds r0, r7, 0 + bl sub_8083188 + mov r3, r10 + ldr r1, [r3] + mov r3, r9 + adds r2, r4, r3 + ldr r3, _08081E74 + adds r1, r3 + adds r1, r2 + strb r0, [r1] + adds r5, 0x18 + adds r4, 0x1 + cmp r4, 0x7 + ble _08081DD0 + mov r1, r8 + cmp r1, 0x7 + ble _08081DBA + ldr r0, _08081E24 + ldr r1, [r0] + ldr r0, _08081E78 + adds r1, r0 + adds r0, r7, 0 + bl sub_8081EC0 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08081E20: .4byte gUnknown_81071E0 +_08081E24: .4byte gDungeon +_08081E28: .4byte 0x00003a08 +_08081E2C: .4byte 0x00003a09 +_08081E30: .4byte 0x00003a0a +_08081E34: .4byte 0x00003a0b +_08081E38: .4byte 0x00003a0c +_08081E3C: .4byte 0x00003a0d +_08081E40: .4byte 0x00003a0e +_08081E44: .4byte 0x00003a10 +_08081E48: .4byte 0x00003a12 +_08081E4C: .4byte 0x00003a14 +_08081E50: .4byte 0x00003a16 +_08081E54: .4byte 0x00003a18 +_08081E58: .4byte 0x0000e218 +_08081E5C: .4byte 0x0000e21c +_08081E60: .4byte 0x0000e220 +_08081E64: .4byte 0x0000e240 +_08081E68: .4byte 0x0000e250 +_08081E6C: .4byte 0x0000e260 +_08081E70: .4byte 0x0000e27c +_08081E74: .4byte 0x0000e87c +_08081E78: .4byte 0x0000e264 + thumb_func_end sub_8081C7C + + thumb_func_start sub_8081E7C +sub_8081E7C: + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x18 + bl memset + adds r0, r5, 0 + bl sub_8083158 + movs r6, 0 + strh r0, [r4] + adds r0, r5, 0 + bl sub_8083158 + strh r0, [r4, 0x4] + adds r1, r4, 0 + adds r1, 0x9 + adds r0, r5, 0 + movs r2, 0x1 + bl sub_8082FE0 + adds r1, r4, 0 + adds r1, 0xE + adds r0, r5, 0 + movs r2, 0x1 + bl sub_8082FE0 + str r6, [r4, 0x10] + str r6, [r4, 0x14] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8081E7C + + thumb_func_start sub_8081EC0 +sub_8081EC0: + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + movs r1, 0 + movs r2, 0x18 + bl memset + adds r0, r6, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_8082FE0 + adds r1, r5, 0x1 + adds r0, r6, 0 + movs r2, 0x1 + bl sub_8082FE0 + movs r4, 0 +_08081EE6: + adds r0, r6, 0 + bl sub_8083188 + adds r1, r5, 0x3 + adds r1, r4 + strb r0, [r1] + adds r0, r6, 0 + bl sub_8083188 + adds r1, r5, 0 + adds r1, 0xB + adds r1, r4 + strb r0, [r1] + adds r4, 0x1 + cmp r4, 0x7 + ble _08081EE6 + adds r0, r6, 0 + bl sub_8083188 + strb r0, [r5, 0x2] + adds r0, r6, 0 + bl sub_8083188 + strb r0, [r5, 0x13] + adds r0, r6, 0 + bl sub_8083188 + strb r0, [r5, 0x14] + adds r0, r6, 0 + bl sub_80831DC + strb r0, [r5, 0x15] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8081EC0 + + thumb_func_start sub_8081F2C +sub_8081F2C: + push {r4,r5,lr} + adds r5, r0, 0 + ldr r1, _08081FE4 + bl sub_8083018 + ldr r4, _08081FE8 + ldr r0, [r4] + ldr r1, _08081FEC + adds r0, r1 + movs r1, 0 + str r1, [r0] + adds r0, r5, 0 + bl sub_8083188 + ldr r1, [r4] + ldr r2, _08081FF0 + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_8083188 + ldr r1, [r4] + ldr r2, _08081FF4 + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _08081FF8 + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _08081FFC + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _08082000 + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _08082004 + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _08082008 + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _0808200C + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _08082010 + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _08082014 + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _08082018 + adds r1, r2 + strb r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08081FE4: .4byte gUnknown_81071E0 +_08081FE8: .4byte gDungeon +_08081FEC: .4byte 0x000181f8 +_08081FF0: .4byte 0x00018208 +_08081FF4: .4byte 0x00018209 +_08081FF8: .4byte 0x0001820a +_08081FFC: .4byte 0x0001820b +_08082000: .4byte 0x0001820c +_08082004: .4byte 0x0001820d +_08082008: .4byte 0x0001820e +_0808200C: .4byte 0x0001820f +_08082010: .4byte 0x00018210 +_08082014: .4byte 0x00018211 +_08082018: .4byte 0x00018213 + thumb_func_end sub_8081F2C + + thumb_func_start sub_808201C +sub_808201C: + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_8083170 + ldr r4, _08082050 + ldr r1, [r4] + ldr r2, _08082054 + adds r1, r2 + strh r0, [r1] + adds r0, r5, 0 + bl sub_8083170 + ldr r1, [r4] + ldr r2, _08082058 + adds r1, r2 + strh r0, [r1] + adds r0, r5, 0 + bl sub_8083170 + ldr r1, [r4] + ldr r2, _0808205C + adds r1, r2 + strh r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08082050: .4byte gDungeon +_08082054: .4byte 0x0001ced6 +_08082058: .4byte 0x0001ced8 +_0808205C: .4byte 0x0001ceda + thumb_func_end sub_808201C + + thumb_func_start sub_8082060 +sub_8082060: + push {r4-r7,lr} + sub sp, 0x8 + adds r5, r0, 0 + ldr r1, _080820A4 + bl sub_8083018 + add r4, sp, 0x4 + mov r7, sp + movs r6, 0x3F +_08082072: + adds r0, r5, 0 + mov r1, sp + bl sub_80820A8 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80831F8 + ldrb r1, [r7] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08082096 + adds r0, r4, 0 + mov r1, sp + movs r2, 0 + bl sub_80460F8 +_08082096: + subs r6, 0x1 + cmp r6, 0 + bge _08082072 + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080820A4: .4byte gUnknown_81071E0 + thumb_func_end sub_8082060 + + thumb_func_start sub_80820A8 +sub_80820A8: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r0, 0 + str r0, [r4] + adds r0, r5, 0 + movs r2, 0x1 + bl sub_8082FE0 + adds r1, r4, 0x1 + adds r0, r5, 0 + movs r2, 0x1 + bl sub_8082FE0 + adds r4, 0x2 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_8082FE0 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80820A8 + + thumb_func_start sub_80820D8 +sub_80820D8: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r5, r0, 0 + ldr r1, _08082178 + bl sub_8083018 + movs r0, 0x1 + add r0, sp + mov r9, r0 + add r1, sp, 0x4 + mov r8, r1 + mov r7, sp + movs r2, 0x3F + mov r10, r2 +_080820FC: + movs r0, 0x6 + strb r0, [r7] + movs r0, 0 + mov r3, sp + strb r0, [r3, 0x1] + adds r0, r5, 0 + mov r1, sp + movs r2, 0x1 + bl sub_8082FE0 + adds r0, r5, 0 + mov r1, sp + adds r1, 0x1 + movs r2, 0x1 + bl sub_8082FE0 + adds r0, r5, 0 + bl sub_80831DC + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r5, 0 + add r1, sp, 0x4 + bl sub_80831F8 + ldrb r0, [r7] + cmp r0, 0xFF + beq _0808215C + mov r1, r8 + movs r2, 0 + ldrsh r0, [r1, r2] + mov r3, sp + movs r2, 0x6 + ldrsh r1, [r3, r2] + bl GetTileSafe + adds r4, r0, 0 + ldrb r0, [r7] + mov r3, r9 + ldrb r2, [r3] + mov r1, r8 + bl sub_8045684 + cmp r0, 0 + beq _0808215C + str r0, [r4, 0x14] + adds r0, 0x20 + strb r6, [r0] +_0808215C: + movs r0, 0x1 + negs r0, r0 + add r10, r0 + mov r1, r10 + cmp r1, 0 + bge _080820FC + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08082178: .4byte gUnknown_81071E0 + thumb_func_end sub_80820D8 + + thumb_func_start sub_808217C +sub_808217C: + push {r4,r5,lr} + adds r5, r0, 0 + ldr r1, _08082250 + bl sub_8083018 + adds r0, r5, 0 + bl sub_80831A0 + ldr r4, _08082254 + ldr r1, [r4] + ldr r2, _08082258 + adds r1, r2 + str r0, [r1] + adds r0, r5, 0 + bl sub_80831A0 + ldr r1, [r4] + ldr r2, _0808225C + adds r1, r2 + str r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _08082260 + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _08082264 + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _08082268 + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _0808226C + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _08082270 + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _08082274 + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _08082278 + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [r4] + ldr r2, _0808227C + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_8083158 + ldr r1, [r4] + movs r2, 0xE0 + lsls r2, 6 + adds r1, r2 + strh r0, [r1] + movs r4, 0 +_08082226: + adds r0, r5, 0 + movs r1, 0x1 + adds r2, r4, 0 + bl sub_8082280 + adds r4, 0x1 + cmp r4, 0x3 + ble _08082226 + movs r4, 0 +_08082238: + adds r0, r5, 0 + movs r1, 0 + adds r2, r4, 0 + bl sub_8082280 + adds r4, 0x1 + cmp r4, 0xF + ble _08082238 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08082250: .4byte gUnknown_81071E0 +_08082254: .4byte gDungeon +_08082258: .4byte 0x000037f0 +_0808225C: .4byte 0x000037f4 +_08082260: .4byte 0x000037f8 +_08082264: .4byte 0x000037f9 +_08082268: .4byte 0x000037fa +_0808226C: .4byte 0x000037fb +_08082270: .4byte 0x000037fc +_08082274: .4byte 0x000037fd +_08082278: .4byte 0x000037fe +_0808227C: .4byte 0x000037ff + thumb_func_end sub_808217C + + thumb_func_start sub_8082280 +sub_8082280: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _0808266C + add sp, r4 + adds r5, r0, 0 + str r2, [sp, 0x210] + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0x20C] + movs r2, 0x82 + lsls r2, 2 + mov r0, sp + movs r1, 0 + bl memset + adds r0, r5, 0 + bl sub_8083188 + adds r0, r5, 0 + bl sub_8083188 + adds r0, r5, 0 + bl sub_8083188 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x214] + add r4, sp, 0x208 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80831F8 + adds r0, r5, 0 + bl sub_80831DC + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x218] + adds r0, r5, 0 + bl sub_8083158 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x21C] + ldr r1, _08082670 + movs r0, 0 + str r0, [r1] + adds r0, r5, 0 + bl sub_8083158 + mov r1, sp + strh r0, [r1] + adds r0, r5, 0 + bl sub_8082BC0 + mov r1, sp + strh r0, [r1, 0x4] + adds r0, r5, 0 + bl sub_8082BC0 + mov r1, sp + strh r0, [r1, 0x2] + adds r0, r5, 0 + bl sub_80831DC + mov r1, sp + strb r0, [r1, 0x6] + adds r0, r5, 0 + bl sub_80831DC + mov r1, sp + strb r0, [r1, 0x7] + adds r0, r5, 0 + bl sub_8083188 + mov r1, sp + strb r0, [r1, 0x8] + adds r0, r5, 0 + bl sub_8083188 + mov r1, sp + strb r0, [r1, 0x9] + adds r0, r5, 0 + bl sub_8083188 + mov r1, sp + strb r0, [r1, 0xA] + add r1, sp, 0x40 + adds r0, r5, 0 + bl sub_8082F64 + adds r0, r5, 0 + bl sub_8083170 + mov r1, sp + strh r0, [r1, 0xC] + adds r0, r5, 0 + bl sub_8083170 + mov r1, sp + strh r0, [r1, 0xE] + adds r0, r5, 0 + bl sub_8083170 + mov r1, sp + strh r0, [r1, 0x10] + adds r0, r5, 0 + bl sub_8083170 + mov r1, sp + strh r0, [r1, 0x12] + adds r0, r5, 0 + bl sub_8083188 + mov r1, sp + strb r0, [r1, 0x14] + adds r0, r5, 0 + bl sub_8083188 + mov r1, sp + strb r0, [r1, 0x15] + adds r0, r5, 0 + bl sub_8083188 + mov r1, sp + strb r0, [r1, 0x16] + adds r0, r5, 0 + bl sub_8083188 + mov r1, sp + strb r0, [r1, 0x17] + adds r0, r5, 0 + bl sub_80831A0 + str r0, [sp, 0x18] + adds r0, r5, 0 + bl sub_8083170 + mov r1, sp + strh r0, [r1, 0x1C] + adds r0, r5, 0 + bl sub_8083170 + mov r1, sp + strh r0, [r1, 0x1E] + adds r0, r5, 0 + bl sub_8083170 + mov r1, sp + strh r0, [r1, 0x20] + adds r0, r5, 0 + bl sub_8083170 + mov r1, sp + strh r0, [r1, 0x22] + adds r0, r5, 0 + bl sub_8083170 + mov r1, sp + strh r0, [r1, 0x24] + adds r0, r5, 0 + bl sub_8083170 + mov r1, sp + strh r0, [r1, 0x26] + adds r0, r5, 0 + bl sub_8083170 + mov r1, sp + strh r0, [r1, 0x28] + adds r0, r5, 0 + bl sub_80831C8 + str r0, [sp, 0x2C] + adds r0, r5, 0 + bl sub_80831C8 + str r0, [sp, 0x30] + adds r0, r5, 0 + bl sub_80831C8 + str r0, [sp, 0x34] + adds r0, r5, 0 + bl sub_80831C8 + str r0, [sp, 0x38] + add r1, sp, 0x44 + adds r0, r5, 0 + bl sub_8082CBC + adds r0, r5, 0 + bl sub_8082BFC + add r1, sp, 0x5C + strb r0, [r1] + adds r0, r5, 0 + bl sub_8082BFC + mov r1, sp + adds r1, 0x5D + strb r0, [r1] + adds r0, r5, 0 + bl sub_8082C18 + mov r1, sp + adds r1, 0x5E + strb r0, [r1] + adds r0, r5, 0 + bl sub_8082C18 + mov r1, sp + adds r1, 0x5F + strb r0, [r1] + add r1, sp, 0x60 + adds r0, r5, 0 + bl sub_80820A8 + adds r0, r5, 0 + bl sub_8082BE0 + add r1, sp, 0x64 + strb r0, [r1] + add r7, sp, 0x78 + add r0, sp, 0x8C + mov r8, r0 + add r1, sp, 0x90 + mov r9, r1 + add r2, sp, 0x94 + mov r10, r2 + mov r3, sp + adds r3, 0x3C + str r3, [sp, 0x270] + mov r0, sp + adds r0, 0x98 + str r0, [sp, 0x274] + mov r1, sp + adds r1, 0x9C + str r1, [sp, 0x278] + mov r2, sp + adds r2, 0xA0 + str r2, [sp, 0x27C] + adds r3, 0x6C + str r3, [sp, 0x284] + adds r0, 0x14 + str r0, [sp, 0x288] + adds r1, 0x14 + str r1, [sp, 0x28C] + adds r2, 0x1C + str r2, [sp, 0x290] + adds r3, 0x18 + str r3, [sp, 0x294] + adds r0, 0x18 + str r0, [sp, 0x298] + adds r1, 0x18 + str r1, [sp, 0x29C] + adds r2, 0x14 + str r2, [sp, 0x220] + adds r3, 0x1C + str r3, [sp, 0x224] + adds r0, 0x1C + str r0, [sp, 0x228] + adds r1, 0x1C + str r1, [sp, 0x22C] + adds r2, 0x18 + str r2, [sp, 0x230] + adds r3, 0x10 + str r3, [sp, 0x234] + adds r0, 0x10 + str r0, [sp, 0x238] + adds r1, 0xD + str r1, [sp, 0x23C] + adds r2, 0xA + str r2, [sp, 0x240] + adds r3, 0x7 + str r3, [sp, 0x244] + adds r0, 0x4 + str r0, [sp, 0x248] + adds r1, 0xA + str r1, [sp, 0x25C] + adds r2, 0x3 + str r2, [sp, 0x24C] + adds r3, 0x3 + str r3, [sp, 0x250] + adds r0, 0x3 + str r0, [sp, 0x254] + subs r1, 0x1 + str r1, [sp, 0x258] + adds r2, 0x7 + str r2, [sp, 0x260] + adds r3, 0x7 + str r3, [sp, 0x264] + adds r0, 0x7 + str r0, [sp, 0x268] + adds r1, 0x5 + str r1, [sp, 0x26C] + subs r2, 0x58 + str r2, [sp, 0x280] + add r4, sp, 0x68 + movs r6, 0x3 +_080824DC: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80831F8 + adds r4, 0x4 + subs r6, 0x1 + cmp r6, 0 + bge _080824DC + adds r0, r5, 0 + adds r1, r7, 0 + bl sub_8082CE4 + adds r0, r5, 0 + mov r1, r8 + bl sub_8082D28 + adds r0, r5, 0 + mov r1, r9 + bl sub_8082D28 + adds r0, r5, 0 + bl sub_8082C84 + movs r4, 0 + mov r3, r10 + strb r0, [r3] + adds r0, r5, 0 + ldr r1, [sp, 0x270] + bl sub_8082F80 + adds r0, r5, 0 + bl sub_80831A0 + ldr r1, [sp, 0x274] + str r0, [r1] + adds r0, r5, 0 + bl sub_80831A0 + ldr r2, [sp, 0x278] + str r0, [r2] + adds r0, r5, 0 + bl sub_80831A0 + ldr r3, [sp, 0x27C] + str r0, [r3] + adds r0, r5, 0 + ldr r1, [sp, 0x284] + bl sub_8082D34 + adds r0, r5, 0 + ldr r1, [sp, 0x288] + bl sub_8082D50 + adds r0, r5, 0 + ldr r1, [sp, 0x28C] + bl sub_8082D7C + adds r0, r5, 0 + ldr r1, [sp, 0x290] + bl sub_8082DA8 + adds r0, r5, 0 + ldr r1, [sp, 0x294] + bl sub_8082DC4 + adds r0, r5, 0 + ldr r1, [sp, 0x298] + bl sub_8082DE8 + adds r0, r5, 0 + ldr r1, [sp, 0x29C] + bl sub_8082E04 + adds r0, r5, 0 + ldr r1, [sp, 0x220] + bl sub_8082E38 + adds r0, r5, 0 + ldr r1, [sp, 0x224] + bl sub_8082E6C + adds r0, r5, 0 + ldr r1, [sp, 0x228] + bl sub_8082E88 + adds r0, r5, 0 + ldr r1, [sp, 0x22C] + bl sub_8082E94 + adds r0, r5, 0 + ldr r1, [sp, 0x230] + bl sub_8082EB0 + adds r0, r5, 0 + ldr r1, [sp, 0x234] + bl sub_8082ECC + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [sp, 0x238] + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r2, [sp, 0x23C] + strb r0, [r2] + adds r0, r5, 0 + bl sub_80831DC + ldr r3, [sp, 0x240] + strb r0, [r3] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [sp, 0x244] + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r2, [sp, 0x248] + strb r0, [r2] + adds r0, r5, 0 + bl sub_8083188 + ldr r3, [sp, 0x25C] + strb r0, [r3] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, [sp, 0x24C] + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r2, [sp, 0x250] + strb r0, [r2] + adds r0, r5, 0 + bl sub_80831DC + ldr r3, [sp, 0x254] + strb r0, [r3] + adds r0, r5, 0 + bl sub_8083188 + ldr r1, [sp, 0x258] + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r2, [sp, 0x260] + strb r0, [r2] + adds r0, r5, 0 + bl sub_8083188 + ldr r3, [sp, 0x264] + strb r0, [r3] + adds r0, r5, 0 + bl sub_8083188 + ldr r1, [sp, 0x268] + strb r0, [r1] + adds r0, r5, 0 + bl sub_8082C34 + ldr r2, [sp, 0x26C] + strb r0, [r2] + adds r0, r5, 0 + bl sub_8082C50 + add r1, sp, 0x100 + strb r0, [r1] + adds r0, r5, 0 + bl sub_8082C6C + add r1, sp, 0x104 + str r0, [r1] + add r1, sp, 0x108 + adds r0, r5, 0 + movs r2, 0x5 + bl sub_8083288 + ldr r1, _08082674 + add r1, sp + adds r0, r5, 0 + movs r2, 0x5 + bl sub_8083288 + adds r0, r5, 0 + bl sub_8083188 + movs r1, 0x89 + lsls r1, 1 + add r1, sp + strb r0, [r1] + adds r0, r5, 0 + bl sub_8083188 + b _08082678 + .align 2, 0 +_0808266C: .4byte 0xfffffd60 +_08082670: .4byte gLeaderPointer +_08082674: .4byte 0x0000010d +_08082678: + ldr r1, _08082818 + add r1, sp + strb r0, [r1] + adds r0, r5, 0 + bl sub_8083188 + add r1, sp, 0x114 + lsls r0, 24 + lsrs r0, 24 + str r0, [r1] + add r1, sp, 0x118 + adds r0, r5, 0 + bl sub_8082F1C + add r1, sp, 0x13C + adds r0, r5, 0 + bl sub_8082F48 + add r1, sp, 0x140 + adds r0, r5, 0 + bl sub_8082F48 + adds r0, r5, 0 + bl sub_80831DC + add r1, sp, 0x144 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, _0808281C + add r1, sp + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, _08082820 + add r1, sp + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + movs r1, 0xA3 + lsls r1, 1 + add r1, sp + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + add r1, sp, 0x148 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, _08082824 + add r1, sp + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + movs r1, 0xA5 + lsls r1, 1 + add r1, sp + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, _08082828 + add r1, sp + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + add r1, sp, 0x14C + strb r0, [r1] + adds r0, r5, 0 + bl sub_8083158 + movs r1, 0xA7 + lsls r1, 1 + add r1, sp + strh r0, [r1] + adds r0, r5, 0 + bl sub_8083158 + add r1, sp, 0x150 + strh r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + movs r1, 0xA9 + lsls r1, 1 + add r1, sp + strb r0, [r1] + adds r0, r5, 0 + bl sub_8083188 + ldr r1, _0808282C + add r1, sp + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + add r1, sp, 0x154 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + ldr r1, _08082830 + add r1, sp + strb r0, [r1] + adds r0, r5, 0 + bl sub_80831DC + movs r1, 0xAB + lsls r1, 1 + add r1, sp + strb r0, [r1] + adds r0, r5, 0 + bl sub_8083188 + add r1, sp, 0x164 + strb r0, [r1] + adds r0, r5, 0 + bl sub_8083188 + ldr r1, _08082834 + add r1, sp + strb r0, [r1] + adds r0, r5, 0 + bl sub_8083188 + movs r1, 0xB3 + lsls r1, 1 + add r1, sp + strb r0, [r1] + adds r0, r5, 0 + bl sub_8083188 + ldr r1, _08082838 + add r1, sp + strb r0, [r1] + adds r0, r5, 0 + bl sub_8083188 + add r1, sp, 0x168 + strb r0, [r1] + adds r0, r5, 0 + bl sub_8083188 + ldr r1, _0808283C + add r1, sp + strb r0, [r1] + add r1, sp, 0x16C + adds r0, r5, 0 + bl sub_80831F8 + adds r0, r5, 0 + bl sub_80831C8 + add r1, sp, 0x174 + str r0, [r1] + adds r0, r5, 0 + bl sub_8083158 + add r1, sp, 0x178 + strh r0, [r1] + adds r0, r5, 0 + bl sub_8083170 + add r1, sp, 0x1F8 + strh r0, [r1] + adds r0, r5, 0 + bl sub_8083170 + movs r1, 0xFD + lsls r1, 1 + add r1, sp + strh r0, [r1] + adds r0, r5, 0 + bl sub_80831A0 + add r1, sp, 0x1FC + str r0, [r1] + adds r0, r5, 0 + bl sub_8082CA0 + ldr r3, [sp, 0x280] + strb r0, [r3] + ldr r0, _08082840 + str r4, [r0] + ldr r0, [sp, 0x214] + cmp r0, 0 + beq _080828BE + ldr r1, [sp, 0x20C] + cmp r1, 0 + beq _08082844 + mov r0, sp + movs r2, 0x2 + ldrsh r0, [r0, r2] + mov r1, sp + movs r3, 0x4 + ldrsh r1, [r1, r3] + ldr r2, [sp, 0x210] + bl sub_80828E0 + b _08082856 + .align 2, 0 +_08082818: .4byte 0x00000113 +_0808281C: .4byte 0x00000145 +_08082820: .4byte 0x00000147 +_08082824: .4byte 0x00000149 +_08082828: .4byte 0x0000014b +_0808282C: .4byte 0x00000153 +_08082830: .4byte 0x00000155 +_08082834: .4byte 0x00000165 +_08082838: .4byte 0x00000167 +_0808283C: .4byte 0x00000169 +_08082840: .4byte gLeaderPointer +_08082844: + mov r0, sp + movs r1, 0x2 + ldrsh r0, [r0, r1] + mov r1, sp + movs r2, 0x4 + ldrsh r1, [r1, r2] + ldr r2, [sp, 0x210] + bl sub_8082A08 +_08082856: + adds r7, r0, 0 + cmp r7, 0 + beq _080828BE + ldr r6, [r7, 0x70] + movs r5, 0x82 + lsls r5, 2 + mov r3, sp + adds r4, r3, r5 + movs r1, 0 + ldrsh r0, [r4, r1] + ldr r3, _080828D4 + add r3, sp + movs r2, 0 + ldrsh r1, [r3, r2] + bl GetTileSafe + ldr r1, [r4] + str r1, [r7, 0x8] + ldr r1, [r4] + str r1, [r7, 0x4] + str r7, [r0, 0x10] + adds r0, r7, 0 + adds r0, 0x20 + movs r4, 0 + add r1, sp, 0x218 + ldrb r1, [r1] + strb r1, [r0] + add r2, sp, 0x21C + ldrh r2, [r2] + strh r2, [r7, 0x26] + adds r0, r6, 0 + mov r1, sp + adds r2, r5, 0 + bl memcpy + ldr r0, _080828D8 + str r4, [r0] + ldrb r0, [r6, 0x7] + cmp r0, 0 + beq _080828B0 + ldr r0, _080828DC + ldrh r1, [r7, 0x4] + strh r1, [r0] + ldrh r1, [r7, 0x6] + strh r1, [r0, 0x2] +_080828B0: + adds r0, r7, 0 + bl LoadIQSkills + adds r0, r7, 0 + movs r1, 0 + bl sub_804535C +_080828BE: + movs r3, 0xA8 + lsls r3, 2 + add sp, r3 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080828D4: .4byte 0x0000020a +_080828D8: .4byte gLeaderPointer +_080828DC: .4byte gUnknown_203B410 + thumb_func_end sub_8082280 + + thumb_func_start sub_80828E0 +sub_80828E0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r5, r2, 0 + lsls r0, 16 + asrs r0, 16 + mov r10, r0 + lsls r1, 16 + asrs r1, 16 + mov r8, r1 + movs r4, 0x1 + negs r4, r4 + mov r0, r8 + bl GetBodySize + lsls r0, 24 + lsrs r6, r0, 24 + movs r3, 0 + movs r0, 0x6 + subs r7, r0, r6 + ldr r0, _08082914 + mov r9, r0 + b _0808291A + .align 2, 0 +_08082914: .4byte gUnknown_202EE70 +_08082918: + adds r3, 0x1 +_0808291A: + cmp r3, r7 + bgt _0808293E + movs r2, 0 + cmp r2, r6 + bge _08082938 + mov r0, r9 + adds r1, r3, r0 + b _08082932 +_0808292A: + adds r1, 0x1 + adds r2, 0x1 + cmp r2, r6 + bge _08082938 +_08082932: + ldrb r0, [r1] + cmp r0, 0 + beq _0808292A +_08082938: + cmp r2, r6 + bne _08082918 + adds r4, r3, 0 +_0808293E: + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + bne _0808294A + movs r0, 0 + b _080829E6 +_0808294A: + ldr r2, _080829F4 + ldr r0, [r2] + lsls r1, r5, 2 + ldr r3, _080829F8 + adds r0, r3 + adds r0, r1 + ldr r7, [r0] + movs r0, 0x1 + mov r9, r0 + str r0, [r7] + adds r0, r7, 0 + adds r0, 0x24 + strb r5, [r0] + lsls r0, r5, 6 + adds r0, r5 + lsls r0, 3 + ldr r1, _080829FC + adds r0, r1 + ldr r1, [r2] + adds r1, r0 + str r1, [r7, 0x70] + movs r5, 0 + mov r3, r10 + strh r3, [r1, 0x2] + ldr r0, [r7, 0x70] + mov r1, r8 + strh r1, [r0, 0x4] + ldr r0, [r7, 0x70] + strb r5, [r0, 0x6] + mov r0, r8 + bl sub_80687D0 + str r0, [r7, 0x64] + lsls r0, r4, 4 + adds r0, 0x40 + adds r1, r7, 0 + adds r1, 0x68 + strh r0, [r1] + adds r1, 0x2 + movs r0, 0x7 + strb r0, [r1] + adds r0, r7, 0 + adds r0, 0x6C + strb r5, [r0] + adds r1, 0x1 + movs r0, 0xFF + strb r0, [r1] + adds r0, r7, 0 + adds r0, 0x6D + mov r3, r9 + strb r3, [r0] + adds r0, 0x2 + strb r3, [r0] + movs r0, 0 + str r0, [r7, 0x1C] + bl sub_8045ACC + ldr r0, [r7, 0x70] + ldr r1, _08082A00 + adds r0, r1 + strb r4, [r0] + ldr r0, [r7, 0x70] + movs r3, 0xB4 + lsls r3, 1 + adds r0, r3 + strb r6, [r0] + cmp r6, 0 + beq _080829E4 + ldr r3, _08082A04 + movs r2, 0x1 + adds r1, r6, 0 +_080829D8: + adds r0, r4, r3 + strb r2, [r0] + adds r4, 0x1 + subs r1, 0x1 + cmp r1, 0 + bne _080829D8 +_080829E4: + adds r0, r7, 0 +_080829E6: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080829F4: .4byte gDungeon +_080829F8: .4byte 0x0001357c +_080829FC: .4byte 0x0000069c +_08082A00: .4byte 0x00000167 +_08082A04: .4byte gUnknown_202EE70 + thumb_func_end sub_80828E0 + + thumb_func_start sub_8082A08 +sub_8082A08: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r5, r2, 0 + lsls r0, 16 + asrs r0, 16 + str r0, [sp] + lsls r1, 16 + asrs r1, 16 + mov r9, r1 + movs r0, 0x1 + negs r0, r0 + mov r8, r0 + mov r0, r9 + bl GetBodySize + lsls r0, 24 + lsrs r6, r0, 24 + movs r3, 0 + movs r0, 0x10 + subs r4, r0, r6 + ldr r7, _08082A3C + b _08082A42 + .align 2, 0 +_08082A3C: .4byte gUnknown_202EE76 +_08082A40: + adds r3, 0x1 +_08082A42: + cmp r3, r4 + bgt _08082A64 + movs r2, 0 + cmp r2, r6 + bge _08082A5E + adds r1, r3, r7 + b _08082A58 +_08082A50: + adds r1, 0x1 + adds r2, 0x1 + cmp r2, r6 + bge _08082A5E +_08082A58: + ldrb r0, [r1] + cmp r0, 0 + beq _08082A50 +_08082A5E: + cmp r2, r6 + bne _08082A40 + mov r8, r3 +_08082A64: + movs r0, 0x1 + negs r0, r0 + cmp r8, r0 + bne _08082A70 + movs r0, 0 + b _08082B1C +_08082A70: + ldr r2, _08082B2C + ldr r0, [r2] + lsls r1, r5, 2 + ldr r3, _08082B30 + adds r0, r3 + adds r0, r1 + ldr r7, [r0] + movs r4, 0x1 + str r4, [r7] + adds r0, r7, 0 + adds r0, 0x24 + movs r1, 0 + mov r10, r1 + strb r5, [r0] + subs r0, 0x2 + mov r3, r10 + strb r3, [r0] + lsls r0, r5, 6 + adds r0, r5 + lsls r0, 3 + ldr r1, _08082B34 + adds r0, r1 + ldr r1, [r2] + adds r1, r0 + str r1, [r7, 0x70] + movs r5, 0 + mov r2, sp + ldrh r2, [r2] + strh r2, [r1, 0x2] + ldr r0, [r7, 0x70] + mov r3, r9 + strh r3, [r0, 0x4] + ldr r0, [r7, 0x70] + strb r4, [r0, 0x6] + mov r0, r9 + bl sub_80687D0 + str r0, [r7, 0x64] + mov r1, r8 + lsls r0, r1, 4 + adds r0, 0xA0 + adds r1, r7, 0 + adds r1, 0x68 + strh r0, [r1] + adds r1, 0x2 + movs r0, 0x7 + strb r0, [r1] + adds r0, r7, 0 + adds r0, 0x6C + strb r5, [r0] + adds r1, 0x1 + movs r0, 0xFF + strb r0, [r1] + adds r0, r7, 0 + adds r0, 0x6D + strb r4, [r0] + adds r0, 0x2 + strb r4, [r0] + mov r2, r10 + str r2, [r7, 0x1C] + ldr r0, [r7, 0x70] + ldr r3, _08082B38 + adds r0, r3 + mov r4, r8 + strb r4, [r0] + ldr r0, [r7, 0x70] + movs r1, 0xB4 + lsls r1, 1 + adds r0, r1 + strb r6, [r0] + cmp r6, 0 + beq _08082B16 + ldr r3, _08082B3C + movs r2, 0x1 + adds r1, r6, 0 +_08082B06: + mov r4, r8 + adds r0, r4, r3 + strb r2, [r0] + movs r0, 0x1 + add r8, r0 + subs r1, 0x1 + cmp r1, 0 + bne _08082B06 +_08082B16: + bl sub_8045ACC + adds r0, r7, 0 +_08082B1C: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08082B2C: .4byte gDungeon +_08082B30: .4byte 0x0001358c +_08082B34: .4byte 0x00000ebc +_08082B38: .4byte 0x00000167 +_08082B3C: .4byte gUnknown_202EE76 + thumb_func_end sub_8082A08 + + thumb_func_start sub_8082B40 +sub_8082B40: + push {r4-r6,lr} + sub sp, 0x4 + movs r6, 0 +_08082B46: + ldr r0, _08082BB8 + ldr r0, [r0] + lsls r1, r6, 2 + ldr r2, _08082BBC + adds r0, r2 + adds r0, r1 + ldr r5, [r0] + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08082BA8 + ldr r4, [r5, 0x70] + movs r1, 0x4 + ldrsh r0, [r4, r1] + bl sub_80687D0 + str r0, [r5, 0x64] + adds r0, r5, 0 + bl sub_806CEBC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_806CCB4 + ldr r0, [r5, 0x4] + str r0, [sp] + adds r0, r4, 0 + adds r0, 0x98 + ldr r0, [r0] + movs r2, 0x4 + ldrsh r1, [r4, r2] + mov r2, sp + movs r3, 0x3 + bl AddPokemonDungeonSprite + movs r1, 0x4 + ldrsh r0, [r5, r1] + movs r2, 0x6 + ldrsh r1, [r5, r2] + bl GetTileSafe + ldrb r1, [r0, 0x9] + adds r0, r5, 0 + adds r0, 0x25 + strb r1, [r0] +_08082BA8: + adds r6, 0x1 + cmp r6, 0x13 + ble _08082B46 + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08082BB8: .4byte gDungeon +_08082BBC: .4byte 0x000135cc + thumb_func_end sub_8082B40 + + thumb_func_start sub_8082BC0 +sub_8082BC0: + push {lr} + sub sp, 0x4 + mov r2, sp + movs r1, 0 + strh r1, [r2] + mov r1, sp + movs r2, 0x2 + bl sub_8082FE0 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_8082BC0 + + thumb_func_start sub_8082BE0 +sub_8082BE0: + push {lr} + sub sp, 0x4 + mov r2, sp + movs r1, 0 + strb r1, [r2] + mov r1, sp + movs r2, 0x1 + bl sub_8082FE0 + mov r0, sp + ldrb r0, [r0] + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_8082BE0 + + thumb_func_start sub_8082BFC +sub_8082BFC: + push {lr} + sub sp, 0x4 + mov r2, sp + movs r1, 0 + strb r1, [r2] + mov r1, sp + movs r2, 0x1 + bl sub_8082FE0 + mov r0, sp + ldrb r0, [r0] + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_8082BFC + + thumb_func_start sub_8082C18 +sub_8082C18: + push {lr} + sub sp, 0x4 + mov r2, sp + movs r1, 0 + strb r1, [r2] + mov r1, sp + movs r2, 0x1 + bl sub_8082FE0 + mov r0, sp + ldrb r0, [r0] + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_8082C18 + + thumb_func_start sub_8082C34 +sub_8082C34: + push {lr} + sub sp, 0x4 + mov r2, sp + movs r1, 0 + strb r1, [r2] + mov r1, sp + movs r2, 0x1 + bl sub_8082FE0 + mov r0, sp + ldrb r0, [r0] + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_8082C34 + + thumb_func_start sub_8082C50 +sub_8082C50: + push {lr} + sub sp, 0x4 + mov r2, sp + movs r1, 0 + strb r1, [r2] + mov r1, sp + movs r2, 0x1 + bl sub_8082FE0 + mov r0, sp + ldrb r0, [r0] + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_8082C50 + + thumb_func_start sub_8082C6C +sub_8082C6C: + push {lr} + sub sp, 0x4 + movs r1, 0 + str r1, [sp] + mov r1, sp + movs r2, 0x4 + bl sub_8082FE0 + ldr r0, [sp] + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_8082C6C + + thumb_func_start sub_8082C84 +sub_8082C84: + push {lr} + sub sp, 0x4 + mov r2, sp + movs r1, 0 + strb r1, [r2] + mov r1, sp + movs r2, 0x1 + bl sub_8082FE0 + mov r0, sp + ldrb r0, [r0] + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_8082C84 + + thumb_func_start sub_8082CA0 +sub_8082CA0: + push {lr} + sub sp, 0x4 + mov r2, sp + movs r1, 0 + strb r1, [r2] + mov r1, sp + movs r2, 0x1 + bl sub_8082FE0 + mov r0, sp + ldrb r0, [r0] + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_8082CA0 + + thumb_func_start sub_8082CBC +sub_8082CBC: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r0, 0 + strh r0, [r4] + adds r1, r4, 0x2 + adds r0, r5, 0 + movs r2, 0x1 + bl sub_8082FE0 + movs r0, 0x7 + strb r0, [r4, 0x3] + adds r4, 0x14 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80831F8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8082CBC + + thumb_func_start sub_8082CE4 +sub_8082CE4: + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8082FE0 + adds r0, r5, 0 + bl sub_80831DC + movs r6, 0 + strb r0, [r4, 0x1] + adds r0, r5, 0 + bl sub_80831DC + strb r0, [r4, 0x2] + adds r0, r5, 0 + bl sub_80831DC + strb r0, [r4, 0x3] + adds r0, r5, 0 + bl sub_8083158 + strh r0, [r4, 0x4] + str r6, [r4, 0x8] + str r6, [r4, 0xC] + adds r4, 0x10 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80831F8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8082CE4 + + thumb_func_start sub_8082D28 +sub_8082D28: + push {lr} + movs r2, 0x3 + bl sub_8082FE0 + pop {r0} + bx r0 + thumb_func_end sub_8082D28 + + thumb_func_start sub_8082D34 +sub_8082D34: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8082FE0 + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x1] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8082D34 + + thumb_func_start sub_8082D50 +sub_8082D50: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8082FE0 + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x1] + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x2] + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x3] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8082D50 + + thumb_func_start sub_8082D7C +sub_8082D7C: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8082FE0 + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x8] + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x9] + adds r0, r4, 0 + bl sub_80831A0 + str r0, [r5, 0x4] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8082D7C + + thumb_func_start sub_8082DA8 +sub_8082DA8: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8082FE0 + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x1] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8082DA8 + + thumb_func_start sub_8082DC4 +sub_8082DC4: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8082FE0 + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x1] + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x2] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8082DC4 + + thumb_func_start sub_8082DE8 +sub_8082DE8: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8082FE0 + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x1] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8082DE8 + + thumb_func_start sub_8082E04 +sub_8082E04: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8082FE0 + adds r0, r4, 0 + bl sub_80831DC + strb r0, [r5, 0x1] + adds r0, r4, 0 + bl sub_80831DC + strb r0, [r5, 0x2] + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x3] + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x4] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8082E04 + + thumb_func_start sub_8082E38 +sub_8082E38: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8082FE0 + adds r0, r4, 0 + bl sub_80831A0 + str r0, [r5, 0x4] + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x8] + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x9] + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0xA] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8082E38 + + thumb_func_start sub_8082E6C +sub_8082E6C: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8082FE0 + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x1] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8082E6C + + thumb_func_start sub_8082E88 +sub_8082E88: + push {lr} + movs r2, 0x1 + bl sub_8082FE0 + pop {r0} + bx r0 + thumb_func_end sub_8082E88 + + thumb_func_start sub_8082E94 +sub_8082E94: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8082FE0 + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x1] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8082E94 + + thumb_func_start sub_8082EB0 +sub_8082EB0: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8082FE0 + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x1] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8082EB0 + + thumb_func_start sub_8082ECC +sub_8082ECC: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8082FE0 + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x1] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8082ECC + + thumb_func_start sub_8082EE8 +sub_8082EE8: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8083188 + strb r0, [r5] + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x1] + adds r1, r5, 0x2 + adds r0, r4, 0 + movs r2, 0x2 + bl sub_8082FE0 + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x4] + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x5] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8082EE8 + + thumb_func_start sub_8082F1C +sub_8082F1C: + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + adds r4, r7, 0 + movs r5, 0x3 +_08082F26: + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8082EE8 + adds r4, 0x8 + subs r5, 0x1 + cmp r5, 0 + bge _08082F26 + adds r0, r6, 0 + bl sub_8083188 + adds r1, r7, 0 + adds r1, 0x20 + strb r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8082F1C + + thumb_func_start sub_8082F48 +sub_8082F48: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8083170 + strh r0, [r5] + adds r0, r4, 0 + bl sub_8083170 + strh r0, [r5, 0x2] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8082F48 + + thumb_func_start sub_8082F64 +sub_8082F64: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8083188 + strb r0, [r5] + adds r0, r4, 0 + bl sub_8083188 + strb r0, [r5, 0x1] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8082F64 + + thumb_func_start sub_8082F80 +sub_8082F80: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8083170 + strh r0, [r5] + adds r0, r4, 0 + bl sub_8082BFC + strb r0, [r5, 0x2] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8082F80 + + thumb_func_start sub_8082F9C +sub_8082F9C: + str r1, [r0] + movs r3, 0 + str r3, [r0, 0x8] + adds r1, r2 + str r1, [r0, 0x4] + bx lr + thumb_func_end sub_8082F9C + + thumb_func_start sub_8082FA8 +sub_8082FA8: + push {r4,lr} + adds r3, r0, 0 + adds r4, r1, 0 + cmp r2, 0 + beq _08082FCC +_08082FB2: + ldr r1, [r3] + ldrb r0, [r4] + strb r0, [r1] + ldr r0, [r3] + adds r0, 0x1 + str r0, [r3] + adds r4, 0x1 + subs r2, 0x1 + ldr r0, [r3, 0x8] + adds r0, 0x1 + str r0, [r3, 0x8] + cmp r2, 0 + bne _08082FB2 +_08082FCC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8082FA8 + + thumb_func_start sub_8082FD4 +sub_8082FD4: + str r1, [r0] + movs r3, 0 + str r3, [r0, 0x8] + adds r1, r2 + str r1, [r0, 0x4] + bx lr + thumb_func_end sub_8082FD4 + + thumb_func_start sub_8082FE0 +sub_8082FE0: + push {r4,lr} + adds r3, r0, 0 + adds r4, r1, 0 + cmp r2, 0 + beq _08083002 +_08082FEA: + ldr r1, [r3] + ldrb r0, [r1] + strb r0, [r4] + adds r1, 0x1 + str r1, [r3] + adds r4, 0x1 + subs r2, 0x1 + ldr r0, [r3, 0x8] + adds r0, 0x1 + str r0, [r3, 0x8] + cmp r2, 0 + bne _08082FEA +_08083002: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8082FE0 + + .align 2,0 diff --git a/include/structs/dungeon_entity.h b/include/structs/dungeon_entity.h index d1f822ed4..406cc9c3b 100644 --- a/include/structs/dungeon_entity.h +++ b/include/structs/dungeon_entity.h @@ -245,7 +245,7 @@ typedef struct EntityInfo /* 0x1F4 */ u8 numMoveTiles; // Number of tiles to move in a turn. Can be greater than 1 if the user's movement speed is boosted. u8 fill1F5; /* 0x1F6 */ bool8 notMoving; - u8 fill1F7[0x1FA - 0x1F7]; + /* 0x1F8 */ s16 unk1F8; /* 0x1FA */ s16 mobileTurnTimer; // When a Pokémon can pass through walls in a hallway, this counts up to 200 before the Pokémon turns in a random direction. /* 0x1FC */ u32 expGainedInTurn; // Used to accumulate experience when multiple enemies are defeated in one turn. /* 0x200 */ u32 statusIcons; diff --git a/include/structs/str_dungeon.h b/include/structs/str_dungeon.h index c65c512c1..62b481b34 100644 --- a/include/structs/str_dungeon.h +++ b/include/structs/str_dungeon.h @@ -13,6 +13,8 @@ #define DUNGEON_MAX_SIZE_Y 32 #define DUNGEON_MAX_WILD_POKEMON 16 #define DUNGEON_MAX_POKEMON MAX_TEAM_MEMBERS + DUNGEON_MAX_WILD_POKEMON +#define DUNGEON_MAX_TRAPS 64 +#define DUNGEON_MAX_ITEMS 64 // size: 0x4 typedef struct DungeonLocation @@ -196,12 +198,12 @@ typedef struct Dungeon /* 0x1357C */ Entity *teamPokemon[MAX_TEAM_MEMBERS]; /* 0x1358C */ Entity *wildPokemon[DUNGEON_MAX_WILD_POKEMON]; /* 0x135CC */ Entity *allPokemon[DUNGEON_MAX_POKEMON]; // Contains both team and wild Pokémon - /* 0x1361C */ Entity *clientPokemon[0x40]; - /* 0x1371C */ Entity *unk1371C[0x40]; + /* 0x1361C */ Entity *items[DUNGEON_MAX_ITEMS]; + /* 0x1371C */ Entity *traps[DUNGEON_MAX_TRAPS]; /* 0x1381C */ Entity teamPokemonEntities[MAX_TEAM_MEMBERS]; /* 0x139EC */ Entity wildPokemonEntities[DUNGEON_MAX_WILD_POKEMON]; - /* 0x1412C */ Entity clientPokemonEntities[0x40]; - /* 0x15E2C */ Entity unk15E2C[0x40]; + /* 0x1412C */ Entity itemEntities[DUNGEON_MAX_ITEMS]; + /* 0x15E2C */ Entity trapEntites[DUNGEON_MAX_TRAPS]; /* 0x17B2C */ Entity *lightningRodPokemon; /* 0x17B30 */ Entity *snatchPokemon; /* 0x17B34 */ Entity *unk17B34; diff --git a/ld_script.txt b/ld_script.txt index 4814edcd6..94dcb23e6 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -272,6 +272,8 @@ SECTIONS { src/code_807E5AC.o(.text); src/trap.o(.text); asm/code_807FCD4.o(.text); + src/trap_1.o(.text); + asm/code_8080CF0.o(.text); src/code_8083288.o(.text); src/dungeon_range.o(.text); src/code_808333C.o(.text); diff --git a/src/dungeon_util.c b/src/dungeon_util.c index 5c422d85c..bc9d2d760 100644 --- a/src/dungeon_util.c +++ b/src/dungeon_util.c @@ -105,16 +105,16 @@ void sub_804513C(void) gDungeon->allPokemon[index] = NULL; } - for (index = 0; index < 0x40; index++) + for (index = 0; index < DUNGEON_MAX_ITEMS; index++) { - gDungeon->clientPokemon[index] = &gDungeon->clientPokemonEntities[index]; - gDungeon->clientPokemon[index]->type = ENTITY_NOTHING; + gDungeon->items[index] = &gDungeon->itemEntities[index]; + gDungeon->items[index]->type = ENTITY_NOTHING; } - for(index = 0; index < 0x40; index++) + for(index = 0; index < DUNGEON_MAX_TRAPS; index++) { - gDungeon->unk1371C[index] = &gDungeon->unk15E2C[index]; - gDungeon->unk1371C[index]->type = ENTITY_NOTHING; + gDungeon->traps[index] = &gDungeon->trapEntites[index]; + gDungeon->traps[index]->type = ENTITY_NOTHING; } } @@ -168,7 +168,7 @@ void sub_804522C(void) { for(index = 0; index < gDungeon->unk3904; index++) { - sub_80462AC(gDungeon->clientPokemon[index], crossEyed, 1, 0xFF, 0); + sub_80462AC(gDungeon->items[index], crossEyed, 1, 0xFF, 0); } if(crossEyed) diff --git a/src/trap.c b/src/trap.c index 0370e404d..e1ffb39c5 100644 --- a/src/trap.c +++ b/src/trap.c @@ -35,6 +35,8 @@ extern u8 *gUnknown_80FD788[]; extern u8 *gUnknown_80FD7D4[]; extern u8 *gUnknown_80F970C[]; extern u8 *gUnknown_80F9728[]; +extern u8 *gUnknown_80FED00[]; +extern u8 *gUnknown_80FED04[]; extern u8 *gUnknown_80FED0C[]; extern s16 gUnknown_80F4E0E; @@ -44,8 +46,24 @@ extern u32 gUnknown_8106A4C; extern u32 gUnknown_8106A50; extern s16 gUnknown_80F4F8A; +struct unkStruct_806B7F8 +{ + s16 species; + u8 unk2; + u32 unk4; + u16 level; + u8 fillA[2]; + struct Position pos; + u8 unk10; +}; +extern u32 sub_806B7F8(struct unkStruct_806B7F8 *, u32); + +s16 sub_803D970(u32); +u8 sub_806AA0C(s32, s32); +void sub_80421EC(Position *, u32); + bool8 sub_8045888(Entity *); -void sub_8080B00(Tile *, u32); +void SetTrap(Tile *, u32); void sub_803E708(u32, u32); u8 sub_8043D10(void); void SetMessageArgument(u8 *, Entity *, u32); @@ -686,7 +704,7 @@ void HandlePitfallTrap(Entity *pokemon, Entity *target, Tile *tile) { info = target->info; if (sub_8045888(target)) { - sub_8080B00(tile, 0x1B); + SetTrap(tile, 0x1B); flag = TRUE; sub_80421C0(target,0x193); sub_803E708(0x1e,0x48); @@ -714,8 +732,174 @@ void HandlePitfallTrap(Entity *pokemon, Entity *target, Tile *tile) sub_8068FE0(target,0x215,pokemon); } if (flag) { - sub_8080B00(tile, 5); + SetTrap(tile, TRAP_PITFALL_TRAP); } } } } + +#ifdef NONMATCHING +void HandleSummonTrap(Entity *pokemon,Position *pos) +{ + int r6; + s32 r4; + u32 direction; + int pokemonSummonCount; + s16 species; + struct unkStruct_806B7F8 stack; + + + r6 = DungeonRandInt(3); + r4 = r6 + 2; + direction = DungeonRandInt(NUM_DIRECTIONS); + if (IsBossFight()) { + goto _ret; + } + else + { + pokemonSummonCount = 0; + if (pokemonSummonCount < r4) { + do { + species = sub_803D970(0); + direction &= DIRECTION_MASK; + stack.species = species; + if (sub_806AA0C(stack.species,0) != 0) { + stack.level = 0; + stack.unk2 = 0; + stack.pos.x = pos->x + gAdjacentTileOffsets[direction].x; + stack.pos.y = pos->y + gAdjacentTileOffsets[direction].y; + stack.unk4 = 0; + stack.unk10 = 0; + if (sub_806B7F8(&stack,1) != 0) { + pokemonSummonCount++; + } + } + direction++; + r6--; + } while (r6 != 0); + } + sub_80421EC(pos,0x194); + if (pokemonSummonCount == 0) { +_ret: + SendMessage(pokemon,*gUnknown_80FED04); + } + else + { + SendMessage(pokemon,*gUnknown_80FED00); + } + } +} +#else +NAKED +void HandleSummonTrap(Entity *pokemon,Position *pos) +{ + asm_unified( + "\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x18\n" + "\tstr r0, [sp, 0x14]\n" + "\tadds r7, r1, 0\n" + "\tmovs r0, 0x3\n" + "\tbl DungeonRandInt\n" + "\tadds r6, r0, 0\n" + "\tadds r4, r6, 0x2\n" + "\tmovs r0, 0x8\n" + "\tbl DungeonRandInt\n" + "\tadds r5, r0, 0\n" + "\tbl IsBossFight\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _080806CA\n" + "\tmovs r0, 0\n" + "\tmov r8, r0\n" + "\tcmp r8, r4\n" + "\tbge _080806BA\n" + "\tmov r4, sp\n" + "\tmovs r1, 0\n" + "\tmov r10, r1\n" + "\tmovs r2, 0\n" + "\tmov r9, r2\n" + "\tadds r6, 0x2\n" +"_08080660:\n" + "\tmovs r0, 0\n" + "\tbl sub_803D970\n" + "\tmovs r1, 0x7\n" + "\tands r5, r1\n" + "\tstrh r0, [r4]\n" + "\tmovs r1, 0\n" + "\tldrsh r0, [r4, r1]\n" + "\tmovs r1, 0\n" + "\tbl sub_806AA0C\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _080806B2\n" + "\tmov r2, r9\n" + "\tstrh r2, [r4, 0x8]\n" + "\tmov r0, r10\n" + "\tstrb r0, [r4, 0x2]\n" + "\tldr r0, _080806D8\n" + "\tlsls r1, r5, 2\n" + "\tadds r1, r0\n" + "\tldrh r0, [r1]\n" + "\tldrh r2, [r7]\n" + "\tadds r0, r2\n" + "\tstrh r0, [r4, 0xC]\n" + "\tldrh r0, [r1, 0x2]\n" + "\tldrh r1, [r7, 0x2]\n" + "\tadds r0, r1\n" + "\tstrh r0, [r4, 0xE]\n" + "\tmov r2, r9\n" + "\tstr r2, [sp, 0x4]\n" + "\tmov r0, r10\n" + "\tstrb r0, [r4, 0x10]\n" + "\tmov r0, sp\n" + "\tmovs r1, 0x1\n" + "\tbl sub_806B7F8\n" + "\tcmp r0, 0\n" + "\tbeq _080806B2\n" + "\tmovs r1, 0x1\n" + "\tadd r8, r1\n" +"_080806B2:\n" + "\tadds r5, 0x1\n" + "\tsubs r6, 0x1\n" + "\tcmp r6, 0\n" + "\tbne _08080660\n" +"_080806BA:\n" + "\tmovs r1, 0xCA\n" + "\tlsls r1, 1\n" + "\tadds r0, r7, 0\n" + "\tbl sub_80421EC\n" + "\tmov r2, r8\n" + "\tcmp r2, 0\n" + "\tbne _080806E0\n" +"_080806CA:\n" + "\tldr r0, _080806DC\n" + "\tldr r1, [r0]\n" + "\tldr r0, [sp, 0x14]\n" + "\tbl SendMessage\n" + "\tb _080806EA\n" + "\t.align 2, 0\n" +"_080806D8: .4byte gAdjacentTileOffsets\n" +"_080806DC: .4byte gUnknown_80FED04\n" +"_080806E0:\n" + "\tldr r0, _080806FC\n" + "\tldr r1, [r0]\n" + "\tldr r0, [sp, 0x14]\n" + "\tbl SendMessage\n" +"_080806EA:\n" + "\tadd sp, 0x18\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" +"_080806FC: .4byte gUnknown_80FED00"); +} +#endif + diff --git a/src/trap_1.c b/src/trap_1.c new file mode 100644 index 000000000..bbfce3c99 --- /dev/null +++ b/src/trap_1.c @@ -0,0 +1,447 @@ +#include "global.h" +#include "trap.h" +#include "code_806CD90.h" +#include "code_8092334.h" +#include "items.h" +#include "dungeon_util.h" +#include "structs/str_dungeon.h" +#include "structs/str_traps.h" + +extern u8 gUnknown_81071E0[]; +extern u8 gUnknown_81071D4[]; + +extern void sub_8082FA8(void *, void *, u32); + +void sub_8083078(void *, u32); +void sub_80830B4(void *, u8); +void sub_8083030(void *, u16); +void sub_8080E0C(unkStruct_8094924 *, Entity *); +void sub_808300C(void *, u8 *); + +void sub_8081788(void *, Item *); +void sub_8080B90(unkStruct_8094924 *param_1); +void SaveItemData(unkStruct_8094924 *param_1); +void sub_8081454(unkStruct_8094924 *param_1); +void sub_808165C(unkStruct_8094924 *param_1); +void sub_808173C(unkStruct_8094924 *param_1); +void SaveTrapData(unkStruct_8094924 *param_1); +void sub_8080CF0(unkStruct_8094924 *param_1); +void nullsub_98(unkStruct_8094924 *param_1); +void sub_8082F9C(unkStruct_8094924 *param_1, u32, u32); +void sub_8049ED4(void); + +void sub_803E708(u32, u32); +void sub_80421C0(Entity *, u32); +void sub_804687C(Entity *, Position *, Position *, Item *, u32); + +void HandleTripTrap(Entity *param_1, Entity *param_2) +{ + u32 direction; + EntityInfo *info; + Position pos; + Item item; + + if (param_2 != NULL) { + sub_806CDD4(param_2, 6, NUM_DIRECTIONS); + sub_803E708(0x10, 0x55); + sub_806CE68(param_2, NUM_DIRECTIONS); + info = param_2->info; + if ((info->heldItem).flags & ITEM_FLAG_EXISTS) { + item = (info->heldItem); + (info->heldItem).flags = 0; + FillInventoryGaps(); + sub_80421C0(param_2, 400); + direction = (info->action).direction & DIRECTION_MASK; + pos.x = (param_2->pos).x + gAdjacentTileOffsets[direction].x; + pos.y = (param_2->pos).y + gAdjacentTileOffsets[direction].y; + sub_804687C(param_1, ¶m_2->pos, &pos, &item, 1); + } + } +} + +void SetTrap(Tile *tile, u8 id) +{ + Trap *trapData; + Entity *entity; + + entity = tile->object; + if (EntityExists(entity)) { + if (GetEntityType(entity) == ENTITY_TRAP) { + trapData = GetTrapData(entity); + trapData->id = id; + } + sub_8049ED4(); + } +} + +void sub_8080B30(u32 param_1,u32 param_2) +{ + unkStruct_8094924 uStack_14; + + sub_8082F9C(&uStack_14,param_1,param_2); + uStack_14.unkC = 0; + sub_8082FA8(&uStack_14,&uStack_14.unkC,4); + sub_8080B90(&uStack_14); + sub_8081454(&uStack_14); + sub_808165C(&uStack_14); + sub_808173C(&uStack_14); + SaveItemData(&uStack_14); + SaveTrapData(&uStack_14); + sub_8080CF0(&uStack_14); + sub_808300C(&uStack_14,gUnknown_81071D4); + nullsub_98(&uStack_14); +} + +void sub_8080B90(unkStruct_8094924 *param_1) +{ + sub_808300C(param_1,gUnknown_81071E0); + sub_8082FA8(param_1,&gDungeon->dungeonLocation,0x58); +} + +void SaveItemData(unkStruct_8094924 *param_1) +{ + bool8 flag; + Item *item; + Entity *entity; + int counter; + u8 local_1c [5]; + + for(counter = 0; counter < 5; counter++) + { + local_1c[counter] = 0; + } + sub_808300C(param_1,gUnknown_81071E0); + + for(counter = 0; counter < DUNGEON_MAX_ITEMS; counter++) + { + entity = gDungeon->items[counter]; + flag = FALSE; + if ((entity != NULL) && (GetEntityType(entity) == ENTITY_ITEM)) { + item = GetItemData(entity); + sub_8081788(param_1,item); + sub_8082FA8(param_1,&entity->pos.x,1); + sub_8082FA8(param_1,&entity->pos.y,1); + flag = TRUE; + } + if (!flag) { + sub_8082FA8(param_1,local_1c,5); + } + } +} + +void SaveTrapData(unkStruct_8094924 *param_1) +{ + bool8 flag; + Trap *trap; + Entity *entity; + int counter; + u8 local_1c [5]; + + for(counter = 0; counter < 5; counter++) + { + local_1c[counter] = -1; + } + sub_808300C(param_1,gUnknown_81071E0); + + for(counter = 0; counter < DUNGEON_MAX_TRAPS; counter++) + { + entity = gDungeon->traps[counter]; + flag = FALSE; + if ((entity != NULL) && (GetEntityType(entity) == ENTITY_TRAP)) { + trap = GetTrapData(entity); + sub_8082FA8(param_1,&trap->id,1); + sub_8082FA8(param_1,&trap->unk1,1); + sub_8082FA8(param_1,&entity->isVisible,1); + sub_8082FA8(param_1,&entity->pos.x,1); + sub_8082FA8(param_1,&entity->pos.y,1); + flag = TRUE; + } + if (!flag) { + sub_8082FA8(param_1,local_1c,5); + } + } +} + +void sub_8080CF0(unkStruct_8094924 *param_1) +{ + s32 counter; + + sub_808300C(param_1,gUnknown_81071E0); + sub_8083078(param_1,gDungeon->unk37F0); + sub_8083078(param_1,gDungeon->unk37F4); + sub_80830B4(param_1,gDungeon->plusIsActive[0]); + sub_80830B4(param_1,gDungeon->plusIsActive[1]); + sub_80830B4(param_1,gDungeon->minusIsActive[0]); + sub_80830B4(param_1,gDungeon->minusIsActive[1]); + sub_80830B4(param_1,gDungeon->decoyActive); + sub_80830B4(param_1,gDungeon->fill37FD); + sub_80830B4(param_1,gDungeon->deoxysDefeat); + sub_80830B4(param_1,gDungeon->fill37FF); + sub_8083030(param_1,gDungeon->unk3800); + for(counter = 0; counter < MAX_TEAM_MEMBERS; counter++) + { + sub_8080E0C(param_1,gDungeon->teamPokemon[counter]); + } + for(counter = 0; counter < DUNGEON_MAX_WILD_POKEMON; counter++) + { + sub_8080E0C(param_1,gDungeon->wildPokemon[counter]); + } +} + +void sub_8083060(void *, u32); +void sub_80817F4(void *, u32); +void sub_80830A0(void *, u32); +void sub_808180C(void *, u32); +void sub_8083048(void *, u32); +void sub_80818C8(void *, bool8 *); +void sub_80817C8(void *, void *); +void sub_8081B34(void *, void *); +void sub_8081B08(void *, Move *); +void sub_8081824(void *, u32); +void sub_80817B0(void *, u32); +void sub_80830D8(void*, Position *); +void sub_80818E4(void *, u8 *); +void sub_8081B54(void *, u8 *); +void sub_808186C(void *, s32); +void sub_8081854(void *, s32); +void sub_808183C(void *, s32); +void sub_8081AB8(void *, bool8 *); +void sub_8081A9C(void *, u8*); +void sub_8081A80(void *, u8*); +void sub_8081A74(void *, u8*); +void sub_8081A58(void *, u8*); +void sub_8081A24(void *, u8*); +void sub_8081994(void *, u8*); +void sub_8081968(void *, u8*); +void sub_808193C(void *, u8*); +void sub_8081920(void *, u8*); +void sub_8081880(void *, u8); +void sub_8081898(void *, s16 *); +void sub_80819B0(void *, u8 *); +void sub_80819D4(void *, u8 *); +void sub_80819F0(void *, u8 *); +void sub_808314C(void *, u8 *, u32); +void sub_80818B8(void *, u32); + +void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2) +{ + Position *pos; + EntityInfo *info; + int iVar4; + EntityInfo info2; + u32 uStack_ac; + u32 uStack_a8; + s16 *psStack_a4; + u8 *temp1; + u8 *temp2; + u8 *temp3; + u8 *puStack_a0; + u32 *puStack_9c; + u32 *puStack_98; + u32 *puStack_94; + u8 *puStack_90; + u8 *puStack_8c; + u8 *puStack_88; + u8 *puStack_84; + u8 *puStack_80; + u8 *puStack_7c; + u8 *puStack_78; + u8 *puStack_74; + u8 *puStack_70; + u8 *puStack_6c; + u8 *puStack_68; + u8 *puStack_64; + u8 *puStack_60; + bool8 *pbStack_5c; + bool8 *pbStack_58; + bool8 *pbStack_54; + bool8 *pbStack_50; + u8 *puStack_4c; + bool8 *pbStack_48; + bool8 *pbStack_44; + bool8 *pbStack_40; + bool8 *pbStack_3c; + u8 *puStack_38; + u8 *puStack_34; + bool8 *pbStack_30; + u8 *puStack_2c; + u8 *puStack_28; + u8 *puStack_24; + + + uStack_a8 = 0; + uStack_ac = 1; + sub_8083060(param_1,0xaa); + sub_8083060(param_1,0x55); + if (EntityExists(param_2)) { + info = param_2->info; + sub_8082FA8(param_1,&uStack_ac,1); + sub_8082FA8(param_1,¶m_2->pos.x,1); + sub_8082FA8(param_1,¶m_2->pos.y,1); + sub_8082FA8(param_1,¶m_2->isVisible,1); + sub_8082FA8(param_1,¶m_2->spawnGenID,2); + } + else { + memset(&info2,0,sizeof(EntityInfo)); + info = &info2; + sub_8082FA8(param_1,&uStack_a8,1); + sub_8082FA8(param_1,&uStack_a8,1); + sub_8082FA8(param_1,&uStack_a8,1); + sub_8082FA8(param_1,&uStack_a8,1); + sub_8082FA8(param_1,&uStack_a8,2); + } + sub_8083030(param_1,info->flags); + sub_80817F4(param_1,info->apparentID); + sub_80817F4(param_1,info->id); + sub_80830B4(param_1,info->isNotTeamMember); + sub_80830B4(param_1,info->isTeamLeader); + sub_8083060(param_1,info->shopkeeper); + sub_8083060(param_1,info->level); + sub_8083060(param_1,info->teamIndex); + sub_80818C8(param_1,&info->joinedAt); + sub_8083048(param_1,info->IQ); + sub_8083048(param_1,info->HP); + sub_8083048(param_1,info->maxHPStat); + sub_8083048(param_1,info->originalHP); + sub_8083060(param_1,info->atk); + sub_8083060(param_1,info->spAtk); + sub_8083060(param_1,info->def); + sub_8083060(param_1,info->spDef); + sub_8083078(param_1,info->exp); + sub_8083048(param_1,info->offensiveStages[0]); + sub_8083048(param_1,info->offensiveStages[1]); + sub_8083048(param_1,info->defensiveStages[0]); + sub_8083048(param_1,info->defensiveStages[1]); + sub_8083048(param_1,info->hitChanceStages[0]); + sub_8083048(param_1,info->hitChanceStages[1]); + sub_8083048(param_1,info->flashFireBoost); + sub_80830A0(param_1,info->offensiveMultipliers[0]); + sub_80830A0(param_1,info->offensiveMultipliers[1]); + sub_80830A0(param_1,info->defensiveMultipliers[0]); + sub_80830A0(param_1,info->defensiveMultipliers[1]); + sub_80817C8(param_1,&info->action); + sub_808180C(param_1,info->types[0]); + sub_808180C(param_1,info->types[1]); + sub_8081824(param_1,info->abilities[0]); + sub_8081824(param_1,info->abilities[1]); + sub_8081788(param_1,&info->heldItem); + sub_80817B0(param_1,info->fill64[0]); + temp3 = &info->aiObjective; + temp2 = info->IQSkillMenuFlags; + temp1 = info->IQSkillFlags; + puStack_a0 = &info->tactic; + psStack_a4 = &info->hiddenPowerBasePower; + puStack_9c = &info->unk98; + puStack_98 = &info->unk9C; + puStack_94 = &info->unkA0; + puStack_8c = &info->sleep; + puStack_88 = &info->nonVolatileStatus; + puStack_84 = &info->immobilizeStatus; + puStack_80 = &info->volatileStatus; + puStack_7c = &info->chargingStatus; + puStack_78 = &info->protectionStatus; + puStack_74 = &info->waitingStatus; + puStack_70 = &info->linkedStatus; + puStack_6c = &info->moveStatus; + puStack_68 = &info->itemStatus; + puStack_64 = &info->transformStatus; + puStack_60 = &info->eyesightStatus; + pbStack_5c = &info->muzzled; + pbStack_58 = &info->powerEars; + pbStack_54 = &info->scanning; + pbStack_50 = &info->stairSpotter; + puStack_4c = &info->fillF3; + pbStack_48 = &info->grudge; + puStack_34 = &info->unkFB; + pbStack_44 = &info->exposed; + pbStack_40 = &info->isColorChanged; + pbStack_3c = &info->bossFlag; + puStack_38 = &info->terrifiedTurns; + pbStack_30 = &info->useHeldItem; + puStack_2c = &info->perishSongTurns; + puStack_28 = &info->unkFE; + puStack_24 = &info->unkFF; + puStack_90 = &info->clientType; + + pos = info->prevPos; + for(iVar4 = 0; iVar4 < 4; iVar4++) + { + sub_80830D8(param_1,pos); + pos++; + } + + sub_80818E4(param_1,temp3); + sub_8081B54(param_1,temp2); + sub_8081B54(param_1,temp1); + sub_8081880(param_1,*puStack_a0); + sub_8081898(param_1,psStack_a4); + sub_8083078(param_1,*puStack_9c); + sub_8083078(param_1,*puStack_98); + sub_8083078(param_1,*puStack_94); + sub_8081920(param_1,puStack_8c); + sub_808193C(param_1,puStack_88); + sub_8081968(param_1,puStack_84); + sub_8081994(param_1,puStack_80); + sub_80819B0(param_1,puStack_7c); + sub_80819D4(param_1,puStack_78); + sub_80819F0(param_1,puStack_74); + sub_8081A24(param_1,puStack_70); + sub_8081A58(param_1,puStack_6c); + sub_8081A74(param_1,puStack_68); + sub_8081A80(param_1,puStack_64); + sub_8081A9C(param_1,puStack_60); + sub_8081AB8(param_1,pbStack_5c); + sub_80830B4(param_1,*pbStack_58); + sub_80830B4(param_1,*pbStack_54); + sub_80830B4(param_1,*pbStack_50); + sub_80830B4(param_1,*puStack_4c); + sub_80830B4(param_1,*pbStack_48); + sub_8083060(param_1,*puStack_34); + sub_80830B4(param_1,*pbStack_44); + sub_80830B4(param_1,*pbStack_40); + sub_80830B4(param_1,*pbStack_3c); + sub_8083060(param_1,*puStack_38); + sub_80830B4(param_1,*pbStack_30); + sub_8083060(param_1,*puStack_2c); + sub_8083060(param_1,*puStack_28); + sub_808183C(param_1,*puStack_24); + sub_8081854(param_1,info->targetingDecoy); + sub_808186C(param_1,info->speedStage); + sub_808314C(param_1,info->speedUpCounters,5); + sub_808314C(param_1,info->speedDownCounters,5); + sub_8083060(param_1,info->stockpileStage); + sub_8083060(param_1,info->fill113); + sub_8083060(param_1,(u8)info->moveRandomly); + sub_8081B08(param_1,info->moves); + sub_8081B34(param_1,&info->belly); + sub_8081B34(param_1,&info->maxBelly); + sub_80830B4(param_1,info->aiNextToTarget); + sub_80830B4(param_1,info->recalculateFollow); + sub_80830B4(param_1,info->waiting); + sub_80830B4(param_1,info->fill146); + sub_80830B4(param_1,info->attacking); + sub_80830B4(param_1,info->unk149); + sub_80830B4(param_1,info->unk14A); + sub_80830B4(param_1,info->unk14B); + sub_80830B4(param_1,info->unk14C); + sub_8083030(param_1,info->visualFlags); + sub_8083030(param_1,info->previousVisualFlags); + sub_80830B4(param_1,info->unk152); + sub_8083060(param_1,info->unk153); + sub_80830B4(param_1,info->unk154); + sub_80830B4(param_1,info->unk155); + sub_80830B4(param_1,info->unk156); + sub_8083060(param_1,info->unk164); + sub_8083060(param_1,info->unk165); + sub_8083060(param_1,info->unk166); + sub_8083060(param_1,info->unk167); + sub_8083060(param_1,info->unk168); + sub_8083060(param_1,info->turnsSinceWarpScarfActivation); + sub_80830D8(param_1,&(info->targetPos)); + sub_80830A0(param_1,info->unk174); + sub_8083030(param_1,info->unk178); + sub_8083048(param_1,info->unk1F8); + sub_8083048(param_1,info->mobileTurnTimer); + sub_8083078(param_1,info->expGainedInTurn); + sub_80818B8(param_1,*puStack_90); +} From fb62dd4a7b217770e77a46cdb0e29a2ab7beb3be Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 12 Feb 2024 14:59:51 -0800 Subject: [PATCH 03/14] Decomp HandleSummonTrap and HandlePPZeroTrap Thanks @YohannDR! --- asm/code_807FCD4.s | 92 -------------------------- src/trap.c | 161 +++++++++++++-------------------------------- 2 files changed, 45 insertions(+), 208 deletions(-) diff --git a/asm/code_807FCD4.s b/asm/code_807FCD4.s index 771bd1d6c..ba715a483 100644 --- a/asm/code_807FCD4.s +++ b/asm/code_807FCD4.s @@ -5,98 +5,6 @@ .text - thumb_func_start HandlePPZeroTrap -HandlePPZeroTrap: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x20 - mov r8, r0 - adds r5, r1, 0 - movs r0, 0 - mov r12, r0 - cmp r5, 0 - beq _080807A4 - ldr r7, [r5, 0x70] - movs r4, 0 - movs r3, 0 - mov r6, sp -_0808071C: - lsls r0, r3, 3 - movs r1, 0x8C - lsls r1, 1 - adds r0, r1 - adds r2, r7, r0 - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08080742 - ldrb r0, [r2, 0x4] - cmp r0, 0 - beq _08080742 - lsls r1, r4, 2 - stm r6!, {r2} - add r0, sp, 0x10 - adds r0, r1 - str r3, [r0] - adds r4, 0x1 -_08080742: - adds r3, 0x1 - cmp r3, 0x3 - ble _0808071C - cmp r4, 0 - beq _0808077A - adds r0, r4, 0 - bl DungeonRandInt - adds r4, r0, 0 - lsls r4, 2 - mov r0, sp - adds r2, r0, r4 - ldr r1, [r2] - movs r0, 0 - strb r0, [r1, 0x4] - ldr r0, _08080790 - ldr r1, [r2] - movs r2, 0 - bl sub_80928C0 - add r0, sp, 0x10 - adds r0, r4 - ldr r1, [r0] - adds r0, r5, 0 - bl sub_806A9B4 - movs r1, 0x1 - mov r12, r1 -_0808077A: - mov r0, r12 - cmp r0, 0 - beq _08080798 - ldr r0, _08080794 - ldr r2, [r0] - mov r0, r8 - adds r1, r5, 0 - bl sub_80522F4 - b _080807A4 - .align 2, 0 -_08080790: .4byte gUnknown_202DE58 -_08080794: .4byte gUnknown_80FDA80 -_08080798: - ldr r0, _080807B0 - ldr r2, [r0] - mov r0, r8 - adds r1, r5, 0 - bl sub_80522F4 -_080807A4: - add sp, 0x20 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080807B0: .4byte gUnknown_80FDAA0 - thumb_func_end HandlePPZeroTrap - thumb_func_start HandleWonderTile HandleWonderTile: push {lr} diff --git a/src/trap.c b/src/trap.c index e1ffb39c5..e23ef5e49 100644 --- a/src/trap.c +++ b/src/trap.c @@ -6,6 +6,7 @@ #include "status.h" #include "code_80521D0.h" #include "items.h" +#include "moves.h" #include "code_808417C.h" #include "dungeon_engine.h" @@ -38,6 +39,8 @@ extern u8 *gUnknown_80F9728[]; extern u8 *gUnknown_80FED00[]; extern u8 *gUnknown_80FED04[]; extern u8 *gUnknown_80FED0C[]; +extern u8 *gUnknown_80FDAA0[]; +extern u8 *gUnknown_80FDA80[]; extern s16 gUnknown_80F4E0E; extern s16 gUnknown_80F4F84; @@ -58,6 +61,8 @@ struct unkStruct_806B7F8 }; extern u32 sub_806B7F8(struct unkStruct_806B7F8 *, u32); +void sub_806A9B4(Entity *, u32); + s16 sub_803D970(u32); u8 sub_806AA0C(s32, s32); void sub_80421EC(Position *, u32); @@ -738,7 +743,6 @@ void HandlePitfallTrap(Entity *pokemon, Entity *target, Tile *tile) } } -#ifdef NONMATCHING void HandleSummonTrap(Entity *pokemon,Position *pos) { int r6; @@ -747,6 +751,7 @@ void HandleSummonTrap(Entity *pokemon,Position *pos) int pokemonSummonCount; s16 species; struct unkStruct_806B7F8 stack; + s32 i; r6 = DungeonRandInt(3); @@ -759,7 +764,8 @@ void HandleSummonTrap(Entity *pokemon,Position *pos) { pokemonSummonCount = 0; if (pokemonSummonCount < r4) { - do { + for (i = 0; i < r6 + 2; i++) + { species = sub_803D970(0); direction &= DIRECTION_MASK; stack.species = species; @@ -775,8 +781,7 @@ void HandleSummonTrap(Entity *pokemon,Position *pos) } } direction++; - r6--; - } while (r6 != 0); + } } sub_80421EC(pos,0x194); if (pokemonSummonCount == 0) { @@ -789,117 +794,41 @@ void HandleSummonTrap(Entity *pokemon,Position *pos) } } } -#else -NAKED -void HandleSummonTrap(Entity *pokemon,Position *pos) + +void HandlePPZeroTrap(Entity *param_1,Entity *param_2) { - asm_unified( - "\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x18\n" - "\tstr r0, [sp, 0x14]\n" - "\tadds r7, r1, 0\n" - "\tmovs r0, 0x3\n" - "\tbl DungeonRandInt\n" - "\tadds r6, r0, 0\n" - "\tadds r4, r6, 0x2\n" - "\tmovs r0, 0x8\n" - "\tbl DungeonRandInt\n" - "\tadds r5, r0, 0\n" - "\tbl IsBossFight\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _080806CA\n" - "\tmovs r0, 0\n" - "\tmov r8, r0\n" - "\tcmp r8, r4\n" - "\tbge _080806BA\n" - "\tmov r4, sp\n" - "\tmovs r1, 0\n" - "\tmov r10, r1\n" - "\tmovs r2, 0\n" - "\tmov r9, r2\n" - "\tadds r6, 0x2\n" -"_08080660:\n" - "\tmovs r0, 0\n" - "\tbl sub_803D970\n" - "\tmovs r1, 0x7\n" - "\tands r5, r1\n" - "\tstrh r0, [r4]\n" - "\tmovs r1, 0\n" - "\tldrsh r0, [r4, r1]\n" - "\tmovs r1, 0\n" - "\tbl sub_806AA0C\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbeq _080806B2\n" - "\tmov r2, r9\n" - "\tstrh r2, [r4, 0x8]\n" - "\tmov r0, r10\n" - "\tstrb r0, [r4, 0x2]\n" - "\tldr r0, _080806D8\n" - "\tlsls r1, r5, 2\n" - "\tadds r1, r0\n" - "\tldrh r0, [r1]\n" - "\tldrh r2, [r7]\n" - "\tadds r0, r2\n" - "\tstrh r0, [r4, 0xC]\n" - "\tldrh r0, [r1, 0x2]\n" - "\tldrh r1, [r7, 0x2]\n" - "\tadds r0, r1\n" - "\tstrh r0, [r4, 0xE]\n" - "\tmov r2, r9\n" - "\tstr r2, [sp, 0x4]\n" - "\tmov r0, r10\n" - "\tstrb r0, [r4, 0x10]\n" - "\tmov r0, sp\n" - "\tmovs r1, 0x1\n" - "\tbl sub_806B7F8\n" - "\tcmp r0, 0\n" - "\tbeq _080806B2\n" - "\tmovs r1, 0x1\n" - "\tadd r8, r1\n" -"_080806B2:\n" - "\tadds r5, 0x1\n" - "\tsubs r6, 0x1\n" - "\tcmp r6, 0\n" - "\tbne _08080660\n" -"_080806BA:\n" - "\tmovs r1, 0xCA\n" - "\tlsls r1, 1\n" - "\tadds r0, r7, 0\n" - "\tbl sub_80421EC\n" - "\tmov r2, r8\n" - "\tcmp r2, 0\n" - "\tbne _080806E0\n" -"_080806CA:\n" - "\tldr r0, _080806DC\n" - "\tldr r1, [r0]\n" - "\tldr r0, [sp, 0x14]\n" - "\tbl SendMessage\n" - "\tb _080806EA\n" - "\t.align 2, 0\n" -"_080806D8: .4byte gAdjacentTileOffsets\n" -"_080806DC: .4byte gUnknown_80FED04\n" -"_080806E0:\n" - "\tldr r0, _080806FC\n" - "\tldr r1, [r0]\n" - "\tldr r0, [sp, 0x14]\n" - "\tbl SendMessage\n" -"_080806EA:\n" - "\tadd sp, 0x18\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_080806FC: .4byte gUnknown_80FED00"); + Move *move; + s32 moveIndex; + s32 i; + s32 counter; + EntityInfo *info; + Move *moveStack [MAX_MON_MOVES]; + s32 indexStack [MAX_MON_MOVES]; + bool8 flag = FALSE; + + + if (param_2 != NULL) { + info = param_2->info; + counter = 0; + for(i = 0; i < MAX_MON_MOVES; move++, i++) + { + move = &info->moves[i]; + if (((move->moveFlags & MOVE_FLAG_EXISTS) != 0) && (move->PP != 0)) { + moveStack[counter] = move; + indexStack[counter] = i; + counter++; + } + } + if (counter != 0) { + moveIndex = DungeonRandInt(counter); + moveStack[moveIndex]->PP = 0; + sub_80928C0(gUnknown_202DE58,moveStack[moveIndex],0); + sub_806A9B4(param_2, indexStack[moveIndex]); + flag = TRUE; + } + if(flag) + sub_80522F4(param_1,param_2,*gUnknown_80FDA80); + else + sub_80522F4(param_1,param_2,*gUnknown_80FDAA0); + } } -#endif - From 04efa8e29d205683c9157831d506b08b80b7b16e Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 12 Feb 2024 21:20:54 -0800 Subject: [PATCH 04/14] more documentation and cleanup --- asm/code_807FCD4.s | 9 ----- asm/code_8080CF0.s | 8 ++--- src/code_8083288.c | 11 +++--- src/trap.c | 14 +++++--- src/trap_1.c | 83 ++++++++++++++++++++++------------------------ 5 files changed, 59 insertions(+), 66 deletions(-) diff --git a/asm/code_807FCD4.s b/asm/code_807FCD4.s index ba715a483..37f196dc0 100644 --- a/asm/code_807FCD4.s +++ b/asm/code_807FCD4.s @@ -5,15 +5,6 @@ .text - thumb_func_start HandleWonderTile -HandleWonderTile: - push {lr} - movs r2, 0 - bl sub_8079E34 - pop {r0} - bx r0 - thumb_func_end HandleWonderTile - thumb_func_start HandleSealTrap HandleSealTrap: push {r4-r7,lr} diff --git a/asm/code_8080CF0.s b/asm/code_8080CF0.s index 94f5ebe24..a5ef3afb7 100644 --- a/asm/code_8080CF0.s +++ b/asm/code_8080CF0.s @@ -120,19 +120,19 @@ _08081526: ldr r0, _08081638 adds r1, r0 adds r0, r7, 0 - bl sub_80830D8 + bl SavePosition ldr r1, [r4] ldr r2, _0808163C adds r1, r2 adds r0, r7, 0 - bl sub_80830D8 + bl SavePosition ldr r6, _08081640 movs r5, 0x7 _08081560: ldr r1, [r4] adds r1, r6 adds r0, r7, 0 - bl sub_80830D8 + bl SavePosition adds r6, 0x4 subs r5, 0x1 cmp r5, 0 @@ -577,7 +577,7 @@ sub_80818E4: adds r4, 0x10 adds r0, r5, 0 adds r1, r4, 0 - bl sub_80830D8 + bl SavePosition pop {r4,r5} pop {r0} bx r0 diff --git a/src/code_8083288.c b/src/code_8083288.c index f0f3ac618..3de6df42e 100644 --- a/src/code_8083288.c +++ b/src/code_8083288.c @@ -1,4 +1,5 @@ #include "global.h" +#include "structs/str_position.h" extern void sub_8082FE0(u32, void *, u32); extern void sub_8082FA8(void *, void *, u32); @@ -76,10 +77,10 @@ void sub_80830B4(u32 *param_1, u8 param_2) sub_8082FA8(param_1,&local_8,1); } -void sub_80830D8(u32 *param_1, u16 *param_2) +void SavePosition(u32 *param_1, Position *param_2) { - sub_8082FA8(param_1, ¶m_2[0], 1); - sub_8082FA8(param_1, ¶m_2[1], 1); + sub_8082FA8(param_1, ¶m_2->x, 1); + sub_8082FA8(param_1, ¶m_2->y, 1); } void sub_80830F8(u32 *param_1, u32 *param_2) @@ -96,9 +97,9 @@ void sub_808312C(u32 *param_1, u16 *param_2) sub_8082FA8(param_1, ¶m_2[1], 1); } -void sub_808314C(u32 *param_1, u32 *param_2, u32 param_3) +void SaveSpeedCounters(u32 *param_1, u32 *speedCounters, u32 numCounters) { - sub_8082FA8(param_1, param_2, param_3); + sub_8082FA8(param_1, speedCounters, numCounters); } u16 sub_8083158(u32 param_1) diff --git a/src/trap.c b/src/trap.c index e23ef5e49..ae841c367 100644 --- a/src/trap.c +++ b/src/trap.c @@ -63,6 +63,7 @@ extern u32 sub_806B7F8(struct unkStruct_806B7F8 *, u32); void sub_806A9B4(Entity *, u32); +void sub_8079E34(Entity *param_1, Entity *param_2, u32); s16 sub_803D970(u32); u8 sub_806AA0C(s32, s32); void sub_80421EC(Position *, u32); @@ -745,17 +746,15 @@ void HandlePitfallTrap(Entity *pokemon, Entity *target, Tile *tile) void HandleSummonTrap(Entity *pokemon,Position *pos) { - int r6; s32 r4; u32 direction; int pokemonSummonCount; s16 species; struct unkStruct_806B7F8 stack; - s32 i; + s32 i; - r6 = DungeonRandInt(3); - r4 = r6 + 2; + r4 = DungeonRandInt(3) + 2; direction = DungeonRandInt(NUM_DIRECTIONS); if (IsBossFight()) { goto _ret; @@ -764,7 +763,7 @@ void HandleSummonTrap(Entity *pokemon,Position *pos) { pokemonSummonCount = 0; if (pokemonSummonCount < r4) { - for (i = 0; i < r6 + 2; i++) + for (i = 0; i < r4; i++) { species = sub_803D970(0); direction &= DIRECTION_MASK; @@ -832,3 +831,8 @@ void HandlePPZeroTrap(Entity *param_1,Entity *param_2) sub_80522F4(param_1,param_2,*gUnknown_80FDAA0); } } + +void HandleWonderTile(Entity *param_1, Entity *param_2) +{ + sub_8079E34(param_1, param_2, 0); +} diff --git a/src/trap_1.c b/src/trap_1.c index bbfce3c99..8e6283da9 100644 --- a/src/trap_1.c +++ b/src/trap_1.c @@ -17,7 +17,6 @@ void sub_80830B4(void *, u8); void sub_8083030(void *, u16); void sub_8080E0C(unkStruct_8094924 *, Entity *); void sub_808300C(void *, u8 *); - void sub_8081788(void *, Item *); void sub_8080B90(unkStruct_8094924 *param_1); void SaveItemData(unkStruct_8094924 *param_1); @@ -29,7 +28,40 @@ void sub_8080CF0(unkStruct_8094924 *param_1); void nullsub_98(unkStruct_8094924 *param_1); void sub_8082F9C(unkStruct_8094924 *param_1, u32, u32); void sub_8049ED4(void); - +void sub_8083060(void *, u32); +void sub_80817F4(void *, u32); +void sub_80830A0(void *, u32); +void sub_808180C(void *, u32); +void sub_8083048(void *, u32); +void sub_80818C8(void *, bool8 *); +void sub_80817C8(void *, void *); +void sub_8081B34(void *, void *); +void sub_8081B08(void *, Move *); +void sub_8081824(void *, u32); +void sub_80817B0(void *, u32); +void SavePosition(void*, Position *); +void sub_80818E4(void *, u8 *); +void sub_8081B54(void *, u8 *); +void sub_808186C(void *, s32); +void sub_8081854(void *, s32); +void sub_808183C(void *, s32); +void sub_8081AB8(void *, bool8 *); +void sub_8081A9C(void *, u8*); +void sub_8081A80(void *, u8*); +void sub_8081A74(void *, u8*); +void sub_8081A58(void *, u8*); +void sub_8081A24(void *, u8*); +void sub_8081994(void *, u8*); +void sub_8081968(void *, u8*); +void sub_808193C(void *, u8*); +void sub_8081920(void *, u8*); +void sub_8081880(void *, u8); +void sub_8081898(void *, s16 *); +void sub_80819B0(void *, u8 *); +void sub_80819D4(void *, u8 *); +void sub_80819F0(void *, u8 *); +void SaveSpeedCounters(void *, u8 *, u32); +void sub_80818B8(void *, u32); void sub_803E708(u32, u32); void sub_80421C0(Entity *, u32); void sub_804687C(Entity *, Position *, Position *, Item *, u32); @@ -188,46 +220,11 @@ void sub_8080CF0(unkStruct_8094924 *param_1) } } -void sub_8083060(void *, u32); -void sub_80817F4(void *, u32); -void sub_80830A0(void *, u32); -void sub_808180C(void *, u32); -void sub_8083048(void *, u32); -void sub_80818C8(void *, bool8 *); -void sub_80817C8(void *, void *); -void sub_8081B34(void *, void *); -void sub_8081B08(void *, Move *); -void sub_8081824(void *, u32); -void sub_80817B0(void *, u32); -void sub_80830D8(void*, Position *); -void sub_80818E4(void *, u8 *); -void sub_8081B54(void *, u8 *); -void sub_808186C(void *, s32); -void sub_8081854(void *, s32); -void sub_808183C(void *, s32); -void sub_8081AB8(void *, bool8 *); -void sub_8081A9C(void *, u8*); -void sub_8081A80(void *, u8*); -void sub_8081A74(void *, u8*); -void sub_8081A58(void *, u8*); -void sub_8081A24(void *, u8*); -void sub_8081994(void *, u8*); -void sub_8081968(void *, u8*); -void sub_808193C(void *, u8*); -void sub_8081920(void *, u8*); -void sub_8081880(void *, u8); -void sub_8081898(void *, s16 *); -void sub_80819B0(void *, u8 *); -void sub_80819D4(void *, u8 *); -void sub_80819F0(void *, u8 *); -void sub_808314C(void *, u8 *, u32); -void sub_80818B8(void *, u32); - void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2) { Position *pos; EntityInfo *info; - int iVar4; + int counter; EntityInfo info2; u32 uStack_ac; u32 uStack_a8; @@ -364,9 +361,9 @@ void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2) puStack_90 = &info->clientType; pos = info->prevPos; - for(iVar4 = 0; iVar4 < 4; iVar4++) + for(counter = 0; counter < NUM_PREV_POS; counter++) { - sub_80830D8(param_1,pos); + SavePosition(param_1,pos); pos++; } @@ -407,8 +404,8 @@ void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2) sub_808183C(param_1,*puStack_24); sub_8081854(param_1,info->targetingDecoy); sub_808186C(param_1,info->speedStage); - sub_808314C(param_1,info->speedUpCounters,5); - sub_808314C(param_1,info->speedDownCounters,5); + SaveSpeedCounters(param_1,info->speedUpCounters,NUM_SPEED_COUNTERS); + SaveSpeedCounters(param_1,info->speedDownCounters,NUM_SPEED_COUNTERS); sub_8083060(param_1,info->stockpileStage); sub_8083060(param_1,info->fill113); sub_8083060(param_1,(u8)info->moveRandomly); @@ -437,7 +434,7 @@ void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2) sub_8083060(param_1,info->unk167); sub_8083060(param_1,info->unk168); sub_8083060(param_1,info->turnsSinceWarpScarfActivation); - sub_80830D8(param_1,&(info->targetPos)); + SavePosition(param_1,&(info->targetPos)); sub_80830A0(param_1,info->unk174); sub_8083030(param_1,info->unk178); sub_8083048(param_1,info->unk1F8); From b27d18c7ceb37a345969ea1e05f59a08112bd5e9 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 16 Feb 2024 13:03:25 -0800 Subject: [PATCH 05/14] more decomp on code_801EE10 --- asm/code_801EE10.s | 418 ----------------------------------------- include/code_801EE10.h | 16 +- include/menu_input.h | 4 +- src/code_801EE10.c | 191 +++++++++++++++++++ src/menu_input.c | 2 +- src/status_actions.c | 11 +- 6 files changed, 206 insertions(+), 436 deletions(-) diff --git a/asm/code_801EE10.s b/asm/code_801EE10.s index 213c5c277..7701afe3c 100644 --- a/asm/code_801EE10.s +++ b/asm/code_801EE10.s @@ -5,424 +5,6 @@ .text - thumb_func_start sub_801EF38 -sub_801EF38: - push {r4-r7,lr} - lsls r0, 24 - movs r7, 0 - cmp r0, 0 - bne _0801EF54 - ldr r0, _0801EF50 - ldr r0, [r0] - adds r0, 0x1C - bl sub_8013660 - b _0801F18C - .align 2, 0 -_0801EF50: .4byte gUnknown_203B270 -_0801EF54: - ldr r0, _0801EF70 - ldr r0, [r0] - adds r0, 0x1C - bl GetKeyPress - subs r0, 0x1 - cmp r0, 0xC - bls _0801EF66 - b _0801F12E -_0801EF66: - lsls r0, 2 - ldr r1, _0801EF74 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801EF70: .4byte gUnknown_203B270 -_0801EF74: .4byte _0801EF78 - .align 2, 0 -_0801EF78: - .4byte _0801EFB6 - .4byte _0801EFAC - .4byte _0801F0E4 - .4byte _0801EFC0 - .4byte _0801F12E - .4byte _0801F12E - .4byte _0801EFE4 - .4byte _0801EFCA - .4byte _0801F12E - .4byte _0801F12E - .4byte _0801F074 - .4byte _0801F04C - .4byte _0801F018 -_0801EFAC: - movs r0, 0x1 - bl PlayMenuSoundEffect - movs r0, 0x2 - b _0801F18E -_0801EFB6: - movs r0, 0 - bl PlayMenuSoundEffect - movs r0, 0x3 - b _0801F18E -_0801EFC0: - movs r0, 0x4 - bl PlayMenuSoundEffect - movs r0, 0x4 - b _0801F18E -_0801EFCA: - ldr r5, _0801EFE0 - ldr r0, [r5] - movs r1, 0x34 - ldrsh r6, [r0, r1] - adds r4, r0, 0 - adds r4, 0x1C - ldr r0, [r0, 0x10] - adds r1, r6, 0 - bl unk_FindMoveEnabledForAIAfter8_v2 - b _0801EFF8 - .align 2, 0 -_0801EFE0: .4byte gUnknown_203B270 -_0801EFE4: - ldr r5, _0801F014 - ldr r0, [r5] - movs r1, 0x34 - ldrsh r6, [r0, r1] - adds r4, r0, 0 - adds r4, 0x1C - ldr r0, [r0, 0x10] - adds r1, r6, 0 - bl unk_FindMoveEnabledForAIBefore8_v2 -_0801EFF8: - adds r1, r0, 0 - adds r0, r4, 0 - bl sub_8013780 - ldr r0, [r5] - movs r2, 0x34 - ldrsh r0, [r0, r2] - cmp r6, r0 - bne _0801F00C - b _0801F12E -_0801F00C: - movs r0, 0x3 - bl PlayMenuSoundEffect - b _0801F12E - .align 2, 0 -_0801F014: .4byte gUnknown_203B270 -_0801F018: - ldr r0, _0801F048 - ldr r2, [r0] - ldrb r1, [r2, 0x5] - adds r5, r0, 0 - cmp r1, 0 - bne _0801F026 - b _0801F12E -_0801F026: - movs r0, 0x34 - ldrsh r4, [r2, r0] - ldr r0, [r2, 0x10] - adds r1, r4, 0 - bl unk_SetMoveToLastInLinkedSequence8_v2 -_0801F032: - ldr r1, [r5] - strh r0, [r1, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r4, r0 - beq _0801F06C - movs r0, 0x3 - bl PlayMenuSoundEffect - b _0801F182 - .align 2, 0 -_0801F048: .4byte gUnknown_203B270 -_0801F04C: - ldr r0, _0801F068 - ldr r2, [r0] - ldrb r1, [r2, 0x5] - adds r5, r0, 0 - cmp r1, 0 - beq _0801F12E - movs r1, 0x34 - ldrsh r4, [r2, r1] - ldr r0, [r2, 0x10] - adds r1, r4, 0 - bl unk_SetMoveToFirstInLinkedSequence8_v2 - b _0801F032 - .align 2, 0 -_0801F068: .4byte gUnknown_203B270 -_0801F06C: - movs r0, 0x2 - bl PlayMenuSoundEffect - b _0801F182 -_0801F074: - ldr r0, _0801F0C8 - ldr r2, [r0] - ldrb r1, [r2, 0x6] - adds r5, r0, 0 - cmp r1, 0 - beq _0801F12E - ldr r0, _0801F0CC - ldr r0, [r0] - movs r1, 0x98 - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x95 - ble _0801F0D0 - movs r1, 0x34 - ldrsh r0, [r2, r1] - ldr r1, [r2, 0x10] - bl sub_8093318 - lsls r0, 24 - cmp r0, 0 - beq _0801F0D0 - ldr r1, [r5] - movs r2, 0x34 - ldrsh r0, [r1, r2] - ldr r1, [r1, 0x10] - bl TryLinkMovesAfter - movs r0, 0x6 - bl PlayMenuSoundEffect - movs r7, 0x1 - ldr r1, [r5] - ldrb r0, [r1, 0x4] - cmp r0, 0 - bne _0801F12E - strb r7, [r1, 0x4] - movs r0, 0xA6 - lsls r0, 1 - bl PlaySound - b _0801F12E - .align 2, 0 -_0801F0C8: .4byte gUnknown_203B270 -_0801F0CC: .4byte gTeamInventoryRef -_0801F0D0: - ldr r0, _0801F0E0 - ldr r1, [r0] - movs r2, 0x34 - ldrsh r0, [r1, r2] - ldr r1, [r1, 0x10] - bl UnlinkMovesAfter - b _0801F0FE - .align 2, 0 -_0801F0E0: .4byte gUnknown_203B270 -_0801F0E4: - ldr r0, _0801F10C - ldr r1, [r0] - ldrb r0, [r1, 0x7] - cmp r0, 0 - beq _0801F12E - ldrb r0, [r1, 0xC] - cmp r0, 0 - beq _0801F110 - movs r2, 0x34 - ldrsh r0, [r1, r2] - ldr r1, [r1, 0x10] - bl ToggleSetMove -_0801F0FE: - lsls r0, 24 - cmp r0, 0 - bne _0801F120 - movs r0, 0x2 - bl PlayMenuSoundEffect - b _0801F12E - .align 2, 0 -_0801F10C: .4byte gUnknown_203B270 -_0801F110: - movs r2, 0x34 - ldrsh r0, [r1, r2] - ldr r1, [r1, 0x10] - bl ToggleMoveEnabled - lsls r0, 24 - cmp r0, 0 - beq _0801F128 -_0801F120: - movs r0, 0x6 - bl PlayMenuSoundEffect - b _0801F182 -_0801F128: - movs r0, 0x2 - bl PlayMenuSoundEffect -_0801F12E: - cmp r7, 0 - bne _0801F182 - movs r3, 0 - ldr r5, _0801F160 - movs r4, 0x1 -_0801F138: - ldr r2, [r5] - lsls r0, r3, 3 - ldr r1, [r2, 0x10] - adds r1, r0 - ldrb r1, [r1] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _0801F16C - movs r0, 0x2 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _0801F164 - adds r0, r2, 0 - adds r0, 0x14 - adds r0, r3 - strb r4, [r0] - b _0801F16C - .align 2, 0 -_0801F160: .4byte gUnknown_203B270 -_0801F164: - adds r0, r2, 0 - adds r0, 0x14 - adds r0, r3 - strb r1, [r0] -_0801F16C: - adds r3, 0x1 - cmp r3, 0x7 - ble _0801F138 - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x1C - adds r1, 0x14 - bl AddMenuCursorSprite_ - cmp r7, 0 - beq _0801F18C -_0801F182: - movs r0, 0x1 - bl sub_801F280 - movs r0, 0x1 - b _0801F18E -_0801F18C: - movs r0, 0 -_0801F18E: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_801EF38 - - thumb_func_start sub_801F194 -sub_801F194: - ldr r0, _0801F1A0 - ldr r0, [r0] - movs r1, 0x34 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_0801F1A0: .4byte gUnknown_203B270 - thumb_func_end sub_801F194 - - thumb_func_start sub_801F1A4 -sub_801F1A4: - ldr r0, _0801F1AC - ldr r0, [r0] - ldrb r0, [r0, 0x4] - bx lr - .align 2, 0 -_0801F1AC: .4byte gUnknown_203B270 - thumb_func_end sub_801F1A4 - - thumb_func_start sub_801F1B0 -sub_801F1B0: - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r4, _0801F210 - ldr r2, [r4] - ldrb r0, [r2, 0x4] - cmp r0, 0 - bne _0801F1C6 - strb r1, [r2, 0x4] -_0801F1C6: - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x58 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - bl sub_801F3F8 - adds r1, r0, 0 - ldr r0, [r4] - strh r1, [r0, 0x3E] - adds r0, 0x1C - bl sub_8013984 - ldr r1, [r4] - ldr r0, [r1, 0x10] - movs r2, 0x34 - ldrsh r1, [r1, r2] - bl sub_8092F4C - ldr r1, [r4] - strh r0, [r1, 0x34] - movs r0, 0x1 - bl sub_801F280 - cmp r5, 0 - beq _0801F208 - ldr r0, [r4] - adds r0, 0x1C - bl AddMenuCursorSprite -_0801F208: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801F210: .4byte gUnknown_203B270 - thumb_func_end sub_801F1B0 - - thumb_func_start sub_801F214 -sub_801F214: - push {r4-r6,lr} - ldr r4, _0801F278 - ldr r2, [r4] - cmp r2, 0 - beq _0801F272 - ldr r0, [r2, 0x50] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r2, r1 - ldr r3, _0801F27C - adds r1, 0x58 - adds r0, r3, 0 - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0xB8 - ldr r0, [r0] - cmp r0, 0 - beq _0801F258 - ldr r0, [r2, 0x54] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r2, r1 - adds r1, 0x58 - adds r0, r3, 0 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} -_0801F258: - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x58 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0801F272: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801F278: .4byte gUnknown_203B270 -_0801F27C: .4byte gUnknown_80DC240 - thumb_func_end sub_801F214 - thumb_func_start sub_801F280 sub_801F280: push {r4-r7,lr} diff --git a/include/code_801EE10.h b/include/code_801EE10.h index 3201fc987..94c95baf6 100644 --- a/include/code_801EE10.h +++ b/include/code_801EE10.h @@ -10,7 +10,7 @@ typedef struct unkStruct_203B270 { u32 unk0; - u8 unk4; + bool8 unk4; u8 unk5; u8 unk6; u8 unk7; @@ -18,7 +18,7 @@ typedef struct unkStruct_203B270 /* 0xC */ u8 isTeamLeader; /* 0x10 */ Move *moves; u8 fill14[0x1C - 0x14]; - MenuInputStruct input; + /* 0x1C */ MenuInputStruct input; u32 unk50; u32 unk54; UnkTextStruct2 unk58[4]; @@ -26,13 +26,13 @@ typedef struct unkStruct_203B270 } unkStruct_203B270; u8 sub_801EE10(u32, s16 species, Move *moves, u32, const u8 *text, u32); +u32 sub_801EF38(char); +s32 sub_801F194(void); +bool8 sub_801F1A4(void); +void sub_801F1B0(bool8, bool8); +void sub_801F214(void); // code_801EE10.s -extern u32 sub_801EF38(u32); -extern u32 sub_801F194(void); -extern bool8 sub_801F1A4(void); -extern void sub_801F1B0(bool8, bool8); -extern void sub_801F214(void); extern void sub_801F280(u32); // Probably bool -#endif // CODE_801EE10_H \ No newline at end of file +#endif // CODE_801EE10_H diff --git a/include/menu_input.h b/include/menu_input.h index a0e26e4f0..1d4bf20a7 100644 --- a/include/menu_input.h +++ b/include/menu_input.h @@ -40,7 +40,7 @@ bool8 sub_8013938(MenuInputStruct *param_1); void sub_8013984(MenuInputStruct * param_1); void sub_8013A54(MenuInputStruct *param_1); void sub_8013A7C(MenuInputStruct *param_1); -void AddMenuCursorSprite_(MenuInputStruct *, u32); +void AddMenuCursorSprite_(MenuInputStruct *, u8 *); void nullsub_34(MenuInputStructSub *); void sub_8013AA0(unkStructFor8013AA0 *); @@ -48,4 +48,4 @@ u32 sub_8013BBC(unkStructFor8013AA0 *); void sub_8013C68(unkStructFor8013AA0 *); void sub_8013D10(unkStructFor8013AA0 *); -#endif // GUARD_MENU_INPUT_H \ No newline at end of file +#endif // GUARD_MENU_INPUT_H diff --git a/src/code_801EE10.c b/src/code_801EE10.c index 92a14e6bc..bd82577c7 100644 --- a/src/code_801EE10.c +++ b/src/code_801EE10.c @@ -1,14 +1,18 @@ #include "global.h" #include "input.h" +#include "items.h" #include "text1.h" #include "text2.h" #include "memory.h" +#include "moves.h" #include "code_801EE10.h" +#include "code_80118A4.h" #include "menu_input.h" extern unkStruct_203B270 *gUnknown_203B270; extern UnkTextStruct2 gUnknown_80DC25C; extern UnkTextStruct2 gUnknown_80DC274; +extern UnkTextStruct2 gUnknown_80DC240; u32 sub_8006544(u32 index); s32 sub_801F3F8(void); @@ -65,3 +69,190 @@ u8 sub_801EE10(u32 param_1, s16 species, Move *moves, u32 param_4, const u8 *tex sub_801F280(1); return 1; } + +u32 sub_801EF38(char param_1) +{ + bool8 bVar2; + s32 index; + s32 index2; + s32 moveIndex; + s32 newIndex; + struct Move *move; + + bVar2 = 0; + if (param_1 == 0) { + sub_8013660(&gUnknown_203B270->input); + return 0; + } + switch(GetKeyPress(&gUnknown_203B270->input)) { + // B_BUTTON + case 2: + PlayMenuSoundEffect(1); + return 2; + // A_BUTTON + case 1: + PlayMenuSoundEffect(0); + return 3; + // START_BUTTON + case 4: + PlayMenuSoundEffect(4); + return 4; + // DPAD_DOWN + case 8: + index = gUnknown_203B270->input.menuIndex; + sub_8013780(&gUnknown_203B270->input, unk_FindMoveEnabledForAIAfter8_v2(gUnknown_203B270->moves, index)); + if (index != gUnknown_203B270->input.menuIndex) { + PlayMenuSoundEffect(3); + } + break; + // DPAD_UP + case 7: + index = gUnknown_203B270->input.menuIndex; + sub_8013780(&gUnknown_203B270->input,unk_FindMoveEnabledForAIBefore8_v2(gUnknown_203B270->moves,index)); + if (index != gUnknown_203B270->input.menuIndex) { + PlayMenuSoundEffect(3); + } + break; + // R_PAD_DOWN_BUTTONS + case 0xd: + if (gUnknown_203B270->unk5 == 0) break; + moveIndex = gUnknown_203B270->input.menuIndex; + newIndex = gUnknown_203B270->input.menuIndex = unk_SetMoveToLastInLinkedSequence8_v2(gUnknown_203B270->moves, moveIndex); + if (moveIndex != newIndex) { + PlayMenuSoundEffect(3); + } + else { + goto _134; + } + sub_801F280(1); + return 1; + // R_PAD_UP_BUTTONS + case 0xc: + if (gUnknown_203B270->unk5 == 0) break; + moveIndex = gUnknown_203B270->input.menuIndex; + newIndex = gUnknown_203B270->input.menuIndex = unk_SetMoveToFirstInLinkedSequence8_v2(gUnknown_203B270->moves,moveIndex); + if (moveIndex != newIndex) { + PlayMenuSoundEffect(3); + } + else { +_134: + PlayMenuSoundEffect(2); + } + sub_801F280(1); + return 1; + // R_A_BUTTONS + case 0xb: + if (gUnknown_203B270->unk6 != 0) { + if ((gTeamInventoryRef->teamMoney > 0x95) && (sub_8093318(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves) != 0)) + { + TryLinkMovesAfter(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves); + PlayMenuSoundEffect(6); + bVar2 = 1; + if (gUnknown_203B270->unk4 == 0) { + gUnknown_203B270->unk4 = 1; + PlaySound(0x14c); + } + break; + } + else if (UnlinkMovesAfter(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves) != 0) { + PlayMenuSoundEffect(6); + goto _ret; + } + else { + PlayMenuSoundEffect(2); + break; + } + } + break; + // SELECT_BUTTON + case 3: + if (gUnknown_203B270->unk7 != 0) { + if (gUnknown_203B270->isTeamLeader) { + if (ToggleSetMove(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves) == 0) { + PlayMenuSoundEffect(2); + break; + } + else { + PlayMenuSoundEffect(6); + goto _ret; + } + } + else + { + if (ToggleMoveEnabled(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves) != 0) { + PlayMenuSoundEffect(6); + goto _ret; + } + else { + PlayMenuSoundEffect(2); + break; + } + } + } + break; + } + if (!bVar2) { + for(index2 = 0; index2 < 8; index2++) + { + move = &gUnknown_203B270->moves[index2]; + if ((move->moveFlags & 1)) { + if ((move->moveFlags & 2)) { + gUnknown_203B270->fill14[index2] = 1; + } + else { + gUnknown_203B270->fill14[index2] = 0; + } + } + } + AddMenuCursorSprite_(&gUnknown_203B270->input, gUnknown_203B270->fill14); + } + if (bVar2) { +_ret: + sub_801F280(1); + return 1; + } + else + { + return 0; + } +} + +s32 sub_801F194 (void) +{ + return gUnknown_203B270->input.menuIndex; +} + +u8 sub_801F1A4(void) +{ + return gUnknown_203B270->unk4; +} + +void sub_801F1B0(bool8 param_1, bool8 param_2) +{ + if(!gUnknown_203B270->unk4) + gUnknown_203B270->unk4 = param_2; + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B270->unk58, TRUE, TRUE); + gUnknown_203B270->input.unk22 = sub_801F3F8(); + sub_8013984(&gUnknown_203B270->input); + gUnknown_203B270->input.menuIndex = sub_8092F4C(gUnknown_203B270->moves, gUnknown_203B270->input.menuIndex); + sub_801F280(1); + if(param_1) + AddMenuCursorSprite(&gUnknown_203B270->input); +} + +void sub_801F214(void) +{ + if(gUnknown_203B270) + { + gUnknown_203B270->unk58[gUnknown_203B270->unk50] = gUnknown_80DC240; + if(gUnknown_203B270->text) + { + gUnknown_203B270->unk58[gUnknown_203B270->unk54] = gUnknown_80DC240; + } + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B270->unk58, TRUE, TRUE); + MemoryFree(gUnknown_203B270); + gUnknown_203B270 = NULL; + } +} diff --git a/src/menu_input.c b/src/menu_input.c index f06d16ceb..4990e8347 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -587,7 +587,7 @@ void AddMenuCursorSprite(MenuInputStruct *param_1) AddMenuCursorSprite_(param_1, 0); } -void AddMenuCursorSprite_(MenuInputStruct *a0, u32 a1) +void AddMenuCursorSprite_(MenuInputStruct *a0, u8 *a1) { SpriteOAM sp = {}; SpriteOAM* ptr; diff --git a/src/status_actions.c b/src/status_actions.c index 2f2163810..cd3823ed3 100644 --- a/src/status_actions.c +++ b/src/status_actions.c @@ -20,8 +20,9 @@ #include "dungeon_visibility.h" #include "structs/map.h" #include "moves.h" +#include "move_util.h" #include "number_util.h" -//#include "pokemon.h" // NOTE: overriding some of the funcs below... when fixed, uncomment this +#include "pokemon.h" #include "status.h" #include "status_checks_1.h" @@ -31,7 +32,6 @@ #include "weather.h" extern void sub_807F43C(Entity *, Entity *); -extern void MobileStatusTarget(Entity *, Entity *); extern void sub_807DC68(Entity *, Entity *); extern void sub_8078A58(Entity *, Entity *, s16, u32); extern u32 sub_803D73C(u32); @@ -59,16 +59,12 @@ extern void sub_807DA14(Entity *, Entity *, s32); extern s16 sub_803D970(u32); extern u8 sub_806AA0C(s32, u32); extern void sub_806BB6C(Entity *, s32); -extern void sub_8075C58(Entity *, Entity *, s32, s32); extern void sub_807E254(Entity *, Entity *, u32); -extern bool8 sub_805727C(Entity * pokemon, Entity * target, s32 chance); extern u32 sub_8055640(Entity *, Entity *, Move *, u32, u32); extern void sub_806A6E8(Entity *); extern void sub_807D3CC(Entity *, Entity *); extern u8 sub_8069D18(Position *); extern u8 sub_804AD34(Position *); -extern u8 sub_8057308(Entity *, u32); - // TODO include dungeon_ai.h when SqueezedStatusTarget is figured out extern void LowerDefenseStageTarget(Entity *, Entity *, s32, s32, u8, bool8); @@ -80,8 +76,9 @@ extern void LowerAttackStageTarget(Entity *, Entity *, s32, s32, u8, bool8); extern void PetrifiedStatusTarget(Entity *, Entity *); extern void WrapTarget(Entity *, Entity *); -// TODO having matching issues when this isn't s32.. +// TODO having matching issues when this isn't s32.. (move_effects_target.h) extern void SqueezedStatusTarget(Entity *, Entity *, s32, bool32); +extern void sub_8075C58(Entity *, Entity *, s32, s32); extern void sub_806F324(Entity *, s32, u32, u32); extern bool8 sub_805755C(Entity* pokemon,u16 moveID); From 2489c11cec95ba84797e4599d6cfdddcd5fec29f Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 16 Feb 2024 15:59:01 -0800 Subject: [PATCH 06/14] minor cleanup --- src/code_801EE10.c | 349 ++++++++++++++++++++++----------------------- 1 file changed, 169 insertions(+), 180 deletions(-) diff --git a/src/code_801EE10.c b/src/code_801EE10.c index bd82577c7..36115fb50 100644 --- a/src/code_801EE10.c +++ b/src/code_801EE10.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/input.h" #include "input.h" #include "items.h" #include "text1.h" @@ -19,201 +20,189 @@ s32 sub_801F3F8(void); u8 sub_801EE10(u32 param_1, s16 species, Move *moves, u32 param_4, const u8 *text, u32 param_6) { - s32 iVar5; - s32 iVar8; - s32 species_s32; - u8 param_4_u8; - s32 four; - - species_s32 = species; - param_4_u8 = param_4; - gUnknown_203B270 = MemoryAlloc(sizeof(unkStruct_203B270), 8); - gUnknown_203B270->unk4 = param_4_u8; - gUnknown_203B270->unk5 = 1; - gUnknown_203B270->unk6 = 1; - gUnknown_203B270->unk7 = 1; - gUnknown_203B270->unk0 = param_1; - switch(param_1) - { - case 2: - case 3: - gUnknown_203B270->unk5 = 0; - gUnknown_203B270->unk6 = 0; - gUnknown_203B270->unk7 = 0; - break; - case 0: - case 1: - break; - } - gUnknown_203B270->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32]; - gUnknown_203B270->isTeamLeader = gUnknown_203B270->pokeStruct->isTeamLeader; - gUnknown_203B270->moves = moves; - gUnknown_203B270->text = text; - iVar8 = iVar5 = sub_801F3F8(); - four = 4; - if (iVar8 < four) { - iVar8 = 4; - } - sub_8006518(gUnknown_203B270->unk58); - gUnknown_203B270->unk50 = param_6; - gUnknown_203B270->unk58[param_6] = gUnknown_80DC25C; - if (gUnknown_203B270->text != NULL) { - gUnknown_203B270->unk54 = sub_8006544(param_6); - gUnknown_203B270->unk58[gUnknown_203B270->unk54] = gUnknown_80DC274; - } - sub_8012D08(&gUnknown_203B270->unk58[gUnknown_203B270->unk50],iVar8); - ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B270->unk58, TRUE, TRUE); - sub_8013818(&gUnknown_203B270->input,iVar5,iVar5,param_6); - sub_8013780(&gUnknown_203B270->input,0); - sub_801F280(1); - return 1; + s32 iVar5; + s32 iVar8; + s32 species_s32; + u8 param_4_u8; + s32 four; + + species_s32 = species; + param_4_u8 = param_4; + gUnknown_203B270 = MemoryAlloc(sizeof(unkStruct_203B270), 8); + gUnknown_203B270->unk4 = param_4_u8; + gUnknown_203B270->unk5 = 1; + gUnknown_203B270->unk6 = 1; + gUnknown_203B270->unk7 = 1; + gUnknown_203B270->unk0 = param_1; + switch(param_1) + { + case 2: + case 3: + gUnknown_203B270->unk5 = 0; + gUnknown_203B270->unk6 = 0; + gUnknown_203B270->unk7 = 0; + break; + case 0: + case 1: + break; + } + gUnknown_203B270->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32]; + gUnknown_203B270->isTeamLeader = gUnknown_203B270->pokeStruct->isTeamLeader; + gUnknown_203B270->moves = moves; + gUnknown_203B270->text = text; + iVar8 = iVar5 = sub_801F3F8(); + four = 4; + if (iVar8 < four) { + iVar8 = 4; + } + sub_8006518(gUnknown_203B270->unk58); + gUnknown_203B270->unk50 = param_6; + gUnknown_203B270->unk58[param_6] = gUnknown_80DC25C; + if (gUnknown_203B270->text != NULL) { + gUnknown_203B270->unk54 = sub_8006544(param_6); + gUnknown_203B270->unk58[gUnknown_203B270->unk54] = gUnknown_80DC274; + } + sub_8012D08(&gUnknown_203B270->unk58[gUnknown_203B270->unk50],iVar8); + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B270->unk58, TRUE, TRUE); + sub_8013818(&gUnknown_203B270->input,iVar5,iVar5,param_6); + sub_8013780(&gUnknown_203B270->input,0); + sub_801F280(1); + return 1; } u32 sub_801EF38(char param_1) { - bool8 bVar2; - s32 index; - s32 index2; - s32 moveIndex; - s32 newIndex; - struct Move *move; - - bVar2 = 0; - if (param_1 == 0) { - sub_8013660(&gUnknown_203B270->input); - return 0; - } - switch(GetKeyPress(&gUnknown_203B270->input)) { - // B_BUTTON - case 2: - PlayMenuSoundEffect(1); - return 2; - // A_BUTTON - case 1: - PlayMenuSoundEffect(0); - return 3; - // START_BUTTON - case 4: - PlayMenuSoundEffect(4); - return 4; - // DPAD_DOWN - case 8: - index = gUnknown_203B270->input.menuIndex; - sub_8013780(&gUnknown_203B270->input, unk_FindMoveEnabledForAIAfter8_v2(gUnknown_203B270->moves, index)); - if (index != gUnknown_203B270->input.menuIndex) { - PlayMenuSoundEffect(3); - } - break; - // DPAD_UP - case 7: - index = gUnknown_203B270->input.menuIndex; - sub_8013780(&gUnknown_203B270->input,unk_FindMoveEnabledForAIBefore8_v2(gUnknown_203B270->moves,index)); - if (index != gUnknown_203B270->input.menuIndex) { - PlayMenuSoundEffect(3); - } - break; - // R_PAD_DOWN_BUTTONS - case 0xd: - if (gUnknown_203B270->unk5 == 0) break; - moveIndex = gUnknown_203B270->input.menuIndex; - newIndex = gUnknown_203B270->input.menuIndex = unk_SetMoveToLastInLinkedSequence8_v2(gUnknown_203B270->moves, moveIndex); - if (moveIndex != newIndex) { - PlayMenuSoundEffect(3); - } - else { - goto _134; - } - sub_801F280(1); - return 1; - // R_PAD_UP_BUTTONS - case 0xc: - if (gUnknown_203B270->unk5 == 0) break; - moveIndex = gUnknown_203B270->input.menuIndex; - newIndex = gUnknown_203B270->input.menuIndex = unk_SetMoveToFirstInLinkedSequence8_v2(gUnknown_203B270->moves,moveIndex); - if (moveIndex != newIndex) { - PlayMenuSoundEffect(3); - } - else { -_134: - PlayMenuSoundEffect(2); - } - sub_801F280(1); - return 1; - // R_A_BUTTONS - case 0xb: - if (gUnknown_203B270->unk6 != 0) { - if ((gTeamInventoryRef->teamMoney > 0x95) && (sub_8093318(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves) != 0)) - { - TryLinkMovesAfter(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves); - PlayMenuSoundEffect(6); - bVar2 = 1; - if (gUnknown_203B270->unk4 == 0) { - gUnknown_203B270->unk4 = 1; - PlaySound(0x14c); - } - break; + bool8 flag; + s32 index; + s32 index2; + s32 moveIndex; + s32 newIndex; + struct Move *move; + + flag = FALSE; + if (param_1 == 0) { + sub_8013660(&gUnknown_203B270->input); + return 0; + } + switch(GetKeyPress(&gUnknown_203B270->input)) { + case INPUT_B_BUTTON: + PlayMenuSoundEffect(1); + return 2; + case INPUT_A_BUTTON: + PlayMenuSoundEffect(0); + return 3; + case INPUT_START_BUTTON: + PlayMenuSoundEffect(4); + return 4; + case INPUT_DPAD_DOWN: + index = gUnknown_203B270->input.menuIndex; + sub_8013780(&gUnknown_203B270->input, unk_FindMoveEnabledForAIAfter8_v2(gUnknown_203B270->moves, index)); + if (index != gUnknown_203B270->input.menuIndex) { + PlayMenuSoundEffect(3); } - else if (UnlinkMovesAfter(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves) != 0) { - PlayMenuSoundEffect(6); - goto _ret; + break; + case INPUT_DPAD_UP: + index = gUnknown_203B270->input.menuIndex; + sub_8013780(&gUnknown_203B270->input,unk_FindMoveEnabledForAIBefore8_v2(gUnknown_203B270->moves,index)); + if (index != gUnknown_203B270->input.menuIndex) { + PlayMenuSoundEffect(3); } - else { - PlayMenuSoundEffect(2); - break; - } - } - break; - // SELECT_BUTTON - case 3: - if (gUnknown_203B270->unk7 != 0) { - if (gUnknown_203B270->isTeamLeader) { - if (ToggleSetMove(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves) == 0) { - PlayMenuSoundEffect(2); - break; + break; + case INPUT_R_DPAD_DOWN_BUTTONS: + if (gUnknown_203B270->unk5 == 0) break; + moveIndex = gUnknown_203B270->input.menuIndex; + newIndex = gUnknown_203B270->input.menuIndex = unk_SetMoveToLastInLinkedSequence8_v2(gUnknown_203B270->moves, moveIndex); + if (moveIndex != newIndex) { + PlayMenuSoundEffect(3); } else { - PlayMenuSoundEffect(6); - goto _ret; + goto _134; } - } - else - { - if (ToggleMoveEnabled(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves) != 0) { - PlayMenuSoundEffect(6); - goto _ret; + sub_801F280(1); + return 1; + case INPUT_R_DPAD_UP_BUTTONS: + if (gUnknown_203B270->unk5 == 0) break; + moveIndex = gUnknown_203B270->input.menuIndex; + newIndex = gUnknown_203B270->input.menuIndex = unk_SetMoveToFirstInLinkedSequence8_v2(gUnknown_203B270->moves,moveIndex); + if (moveIndex != newIndex) { + PlayMenuSoundEffect(3); } else { - PlayMenuSoundEffect(2); - break; +_134: + PlayMenuSoundEffect(2); + } + sub_801F280(1); + return 1; + case INPUT_R_A_BUTTONS: + if (gUnknown_203B270->unk6 != 0) { + if ((gTeamInventoryRef->teamMoney > 0x95) && (sub_8093318(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves))) + { + TryLinkMovesAfter(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves); + PlayMenuSoundEffect(6); + flag = TRUE; + if (!gUnknown_203B270->unk4) { + gUnknown_203B270->unk4 = TRUE; + PlaySound(0x14c); + } + break; + } + else if (UnlinkMovesAfter(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves)) { + PlayMenuSoundEffect(6); + goto _ret; + } + else { + PlayMenuSoundEffect(2); + break; + } + } + break; + case INPUT_SELECT_BUTTON: + if (gUnknown_203B270->unk7 != 0) { + if (gUnknown_203B270->isTeamLeader) { + if (!ToggleSetMove(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves)) { + PlayMenuSoundEffect(2); + break; + } + else { + PlayMenuSoundEffect(6); + goto _ret; + } + } + else if (ToggleMoveEnabled(gUnknown_203B270->input.menuIndex,gUnknown_203B270->moves)) { + PlayMenuSoundEffect(6); + goto _ret; + } + else { + PlayMenuSoundEffect(2); + break; + } + } + break; + } + if (!flag) { + for(index2 = 0; index2 < 8; index2++) + { + move = &gUnknown_203B270->moves[index2]; + if ((move->moveFlags & MOVE_FLAG_EXISTS)) { + if ((move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN)) { + gUnknown_203B270->fill14[index2] = 1; + } + else { + gUnknown_203B270->fill14[index2] = 0; + } } - } - } - break; - } - if (!bVar2) { - for(index2 = 0; index2 < 8; index2++) - { - move = &gUnknown_203B270->moves[index2]; - if ((move->moveFlags & 1)) { - if ((move->moveFlags & 2)) { - gUnknown_203B270->fill14[index2] = 1; - } - else { - gUnknown_203B270->fill14[index2] = 0; } - } + AddMenuCursorSprite_(&gUnknown_203B270->input, gUnknown_203B270->fill14); } - AddMenuCursorSprite_(&gUnknown_203B270->input, gUnknown_203B270->fill14); - } - if (bVar2) { -_ret: - sub_801F280(1); - return 1; + if (flag) { + _ret: + sub_801F280(1); + return 1; } else - { - return 0; +{ + return 0; } } @@ -222,7 +211,7 @@ s32 sub_801F194 (void) return gUnknown_203B270->input.menuIndex; } -u8 sub_801F1A4(void) +bool8 sub_801F1A4(void) { return gUnknown_203B270->unk4; } From e99149c556977cbf8dfe57c5dcfffd36acdf9082 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 19 Feb 2024 11:24:25 -0800 Subject: [PATCH 07/14] split out into multiple files and move data to src --- data/data_80DC240.s | 103 ---------- ld_script.txt | 6 +- src/code_801EE10.c | 36 +++- src/code_801EE10_mid.c | 416 ----------------------------------------- src/code_801F428.c | 218 +++++++++++++++++++++ src/code_801F808.c | 227 ++++++++++++++++++++++ 6 files changed, 483 insertions(+), 523 deletions(-) delete mode 100644 data/data_80DC240.s create mode 100644 src/code_801F428.c create mode 100644 src/code_801F808.c diff --git a/data/data_80DC240.s b/data/data_80DC240.s deleted file mode 100644 index c04f02f30..000000000 --- a/data/data_80DC240.s +++ /dev/null @@ -1,103 +0,0 @@ - .section .rodata - -@ code_801EE10 - .align 2,0 -.string "pksdir0\0" - .align 2,0 - - .global gUnknown_80DC240 -gUnknown_80DC240: @ 80DC240 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global Data_80DC258 - Data_80DC258: - .byte 0x01, 0x00, 0x0f, 0x00 - - .global gUnknown_80DC25C -gUnknown_80DC25C: @ 80DC25C - .byte 0x00, 0x00 - .byte 0x00, 0x00 - .byte 0x06, 0x00 - .byte 0x00, 0x00 - .byte 0x02, 0x00 - .byte 0x02, 0x00 - .byte 0x12, 0x00 - .byte 0x08, 0x00 - .byte 0x08, 0x00 - .byte 0x00, 0x00 - - .4byte Data_80DC258 - - .global gUnknown_80DC274 -gUnknown_80DC274: @ 80DC274 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x0f, 0x00 - .byte 0x1a, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80DC28C -gUnknown_80DC28C: @ 80DC28C - .string "Moves: {COLOR_1 YELLOW}{ARG_POKEMON_0}{END_COLOR_TEXT_1} \0" - .align 2,0 - - .global gUnknown_80DC2A0 -gUnknown_80DC2A0: @ 80DC2A0 - .string "{ARG_MOVE_ITEM_0}\0" - -@ code_801EE10_mid #1 - .align 2,0 -.string "pksdir0\0" - .align 2,0 - - .global gUnknown_80DC2AC -gUnknown_80DC2AC: @ 80DC2AC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80DC2C4 -gUnknown_80DC2C4: @ 80DC2C4 - .byte 0x00, 0x00 - .byte 0x00, 0x00 - .byte 0x06, 0x00 - .byte 0x00, 0x00 - .byte 0x02, 0x00 - .byte 0x02, 0x00 - .byte 0x0f, 0x00 - .byte 0x04, 0x00 - .byte 0x06, 0x00 - .byte 0x00, 0x00 - .byte 0x00, 0x00 - .byte 0x00, 0x00 - - .global gUnknown_80DC2DC -gUnknown_80DC2DC: @ 80DC2DC - .string "Moves Page: %d/%d \0" - - .align 2,0 -@ code_801EE10_mid #2 -.string "pksdir0\0" - .align 2,0 - - .global gUnknown_80DC2F8 -gUnknown_80DC2F8: @ 80DC2F8 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80DC310 -gUnknown_80DC310: @ 80DC310 - .string "{ARG_POKEMON_0}\0" \ No newline at end of file diff --git a/ld_script.txt b/ld_script.txt index 94dcb23e6..c494c0d3a 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -123,6 +123,8 @@ SECTIONS { src/code_801EE10.o(.text); asm/code_801EE10.o(.text); src/code_801EE10_mid.o(.text); + src/code_801F428.o(.text); + src/code_801F808.o(.text); src/gulpin_shop_801FB50.o(.text); src/wigglytuff_shop1.o(.text); src/wigglytuff_shop2.o(.text); @@ -460,7 +462,9 @@ SECTIONS { src/hints_menu1.o(.rodata); src/hints_menu2.o(.rodata); src/gulpin_shop.o(.rodata); - data/data_80DC240.o(.rodata); + src/code_801EE10.o(.rodata); + src/code_801F428.o(.rodata); + src/code_801F808.o(.rodata); src/gulpin_shop_801FB50.o(.rodata); src/wigglytuff_shop1.o(.rodata); src/wigglytuff_shop2.o(.rodata); diff --git a/src/code_801EE10.c b/src/code_801EE10.c index 36115fb50..b99a842c6 100644 --- a/src/code_801EE10.c +++ b/src/code_801EE10.c @@ -1,4 +1,5 @@ #include "global.h" +#include "globaldata.h" #include "constants/input.h" #include "input.h" #include "items.h" @@ -11,9 +12,38 @@ #include "menu_input.h" extern unkStruct_203B270 *gUnknown_203B270; -extern UnkTextStruct2 gUnknown_80DC25C; -extern UnkTextStruct2 gUnknown_80DC274; -extern UnkTextStruct2 gUnknown_80DC240; + +const UnkTextStruct2 gUnknown_80DC240 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00, + NULL +}; + +const u8 gUnkData_80DC258[4] = {0x01, 0x00, 0x0F, 0x00}; + +const UnkTextStruct2 gUnknown_80DC25C = { + 0, 0, 0, 0, + 6, + 0x2, 0x2, + 0x12, 0x8, + 0x8, 0, + gUnkData_80DC258 +}; + +const UnkTextStruct2 gUnknown_80DC274 = { + 0, 0, 0, 0, + 3, + 0x2, 0xF, + 0x1A, 0x3, + 0x3, 0, + NULL, +}; + +ALIGNED(4) const u8 gUnknown_80DC28C[] = _("Moves: {COLOR_1 YELLOW}{ARG_POKEMON_0}{END_COLOR_TEXT_1} "); +ALIGNED(4) const u8 gUnknown_80DC2A0[] = _("{ARG_MOVE_ITEM_0}"); u32 sub_8006544(u32 index); s32 sub_801F3F8(void); diff --git a/src/code_801EE10_mid.c b/src/code_801EE10_mid.c index be1d62bd5..50bf825cf 100644 --- a/src/code_801EE10_mid.c +++ b/src/code_801EE10_mid.c @@ -1,72 +1,8 @@ #include "global.h" -#include "memory.h" -#include "text1.h" -#include "text2.h" -#include "pokemon.h" -#include "code_800D090.h" -#include "moves.h" #include "code_801EE10.h" -#include "menu_input.h" -#include "structs/subStruct_203B240.h" -#include "sprite.h" -#include "code_80130A8.h" -#include "code_801EE10_mid.h" -#include "code_80118A4.h" -#include "input.h" extern unkStruct_203B270 *gUnknown_203B270; -struct unkStruct_203B274 -{ - // size: 0x3e8 - PokemonStruct1 *pokeStruct; - unkStruct_808E218_arg *unk4; - unkStruct_808E218_arg unk8; - MenuInputStruct input; - s32 unk37C; - UnkTextStruct2 *unk380; - UnkTextStruct2 unk384[4]; - u8 unk3E4[4]; -}; -extern struct unkStruct_203B274 *gUnknown_203B274; - -struct unkStruct_203B278 -{ - s32 state; - u16 *moveIDs; - u16 unk8; - u16 fillA; - s32 unkC; - s32 unk10; - struct subStruct_203B240 *unk14[4]; - u32 unk24; - MenuInputStruct unk28; - u32 unk5C; - UnkTextStruct2 *unk60; - UnkTextStruct2 unk64[4]; - u8 unkC4[4]; - MenuInputStructSub unkC8; -}; - -extern struct unkStruct_203B278 *gUnknown_203B278; - -extern UnkTextStruct2 gUnknown_80DC2C4; -extern UnkTextStruct2 gUnknown_80DC2AC; -extern UnkTextStruct2 gUnknown_80DC2F8; - -extern u8 gAvailablePokemonNames[]; -extern u8 gUnknown_80DC310[]; -extern u8 gUnknown_80DC2DC[]; - -extern void sub_801F918(s32); -extern void sub_801FA58(void); -extern void sub_801FAD4(void); -extern void sub_801F930(void); -extern void sub_801F9A4(void); - -u32 sub_801F7E4(void); -void sub_801F690(void); - s32 sub_801F3F8(void) { Move *move; @@ -83,355 +19,3 @@ s32 sub_801F3F8(void) } return counter; } - - - -// THIS IS A NEW FILE - -bool8 sub_801F428(s16 index, s32 param_2) -{ - s32 index_s32 = index; - gUnknown_203B274 = MemoryAlloc(sizeof(struct unkStruct_203B274), 0x8); - gUnknown_203B274->pokeStruct = &gRecruitedPokemonRef->pokemon[index_s32]; - gUnknown_203B274->unk4 = &gUnknown_203B274->unk8; - gUnknown_203B274->unk37C = param_2; - gUnknown_203B274->unk380 = &gUnknown_203B274->unk384[gUnknown_203B274->unk37C]; - sub_8006518(gUnknown_203B274->unk384); - gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = gUnknown_80DC2C4; - gUnknown_203B274->unk380->unk14 = gUnknown_203B274->unk3E4; - gUnknown_203B274->unk3E4[0] = 1; - gUnknown_203B274->unk3E4[1] = 0; - gUnknown_203B274->unk3E4[2] = 0xC; - gUnknown_203B274->unk3E4[3] = 0; - ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B274->unk384, TRUE, TRUE); - sub_8013818(&gUnknown_203B274->input, sub_801F7E4(), 4, param_2); - sub_801F690(); - sub_801F700(); - return TRUE; -} - -u32 sub_801F520(u8 param_1) -{ - if (param_1 == 0) { - sub_8013660(&gUnknown_203B274->input); - return 0; - } - else { - switch(GetKeyPress(&gUnknown_203B274->input)) - { - case 2: - PlayMenuSoundEffect(1); - return 2; - case 1: - PlayMenuSoundEffect(0); - return 3; - case 4: - PlayMenuSoundEffect(4); - return 4; - default: - break; - } - if (sub_80138B8(&gUnknown_203B274->input,1) != 0) { - sub_801F690(); - sub_801F700(); - return 1; - } - else { - return 0; - } - } -} - -u16 sub_801F5B4(void) -{ - return gUnknown_203B274->unk4->unk0[gUnknown_203B274->input.unk1E * gUnknown_203B274->input.unk1C + gUnknown_203B274->input.menuIndex]; -} - -void sub_801F5F0(bool8 r0) -{ - ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B274->unk384, FALSE, FALSE); - sub_8013984(&gUnknown_203B274->input); - sub_801F690(); - sub_801F700(); - if(r0) - AddMenuCursorSprite(&gUnknown_203B274->input); -} - -void sub_801F63C(void) -{ - if(gUnknown_203B274 != NULL) - { - gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = gUnknown_80DC2AC; - ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B274->unk384, TRUE, TRUE); - MemoryFree(gUnknown_203B274); - gUnknown_203B274 = NULL; - } -} - -NAKED // sub_80095E4 memes -void sub_801F690(void) -{ - asm_unified( - "\tpush {r4,r5,lr}\n" - "\tldr r5, _0801F6F4\n" - "\tldr r0, [r5]\n" - "\tldr r1, _0801F6F8\n" - "\tadds r0, r1\n" - "\tmovs r2, 0\n" - "\tldrsh r0, [r0, r2]\n" - "\tmovs r1, 0xC\n" - "\tbl sub_80095E4\n" - "\tadds r0, 0x2\n" - "\tlsls r0, 16\n" - "\tldr r3, [r5]\n" - "\tmovs r1, 0xDF\n" - "\tlsls r1, 2\n" - "\tadds r4, r3, r1\n" - "\tldr r2, [r4]\n" - "\tlsls r1, r2, 1\n" - "\tadds r1, r2\n" - "\tlsls r1, 3\n" - "\tadds r1, r3, r1\n" - "\tldr r2, _0801F6FC\n" - "\tadds r1, r2\n" - "\tasrs r2, r0, 16\n" - "\tlsrs r0, 16\n" - "\tstrh r0, [r1]\n" - "\tldr r1, [r4]\n" - "\tlsls r0, r1, 1\n" - "\tadds r0, r1\n" - "\tlsls r0, 3\n" - "\tadds r3, r0\n" - "\tadds r2, 0x2\n" - "\tmovs r0, 0xE5\n" - "\tlsls r0, 2\n" - "\tadds r3, r0\n" - "\tstrh r2, [r3]\n" - "\tbl ResetUnusedInputStruct\n" - "\tldr r0, [r5]\n" - "\tmovs r1, 0xE1\n" - "\tlsls r1, 2\n" - "\tadds r0, r1\n" - "\tmovs r1, 0x1\n" - "\tmovs r2, 0x1\n" - "\tbl sub_800641C\n" - "\tpop {r4,r5}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_0801F6F4: .4byte gUnknown_203B274\n" -"_0801F6F8: .4byte 0x00000362\n" -"_0801F6FC: .4byte 0x00000392"); -} - -void sub_801F700(void) -{ - u32 y; - int index; - u8 buffer2 [48]; - u8 buffer1 [128]; - - sub_8008C54(gUnknown_203B274->unk37C); - sub_80073B8(gUnknown_203B274->unk37C); - sprintfStatic(buffer1,gUnknown_80DC2DC,gUnknown_203B274->input.unk1E + 1,gUnknown_203B274->input.unk20); // Moves Page: %d/%d - xxx_call_draw_string(0x10,0,buffer1,gUnknown_203B274->unk37C,0); - for(index = 0; index < gUnknown_203B274->input.unk1A; index++) - { - sub_8092C84(buffer2,gUnknown_203B274->unk4->unk0[gUnknown_203B274->input.unk1E * gUnknown_203B274->input.unk1C + index]); - y = sub_8013800(&gUnknown_203B274->input, index); - xxx_call_draw_string(8,y,buffer2,gUnknown_203B274->unk37C,0); - } - sub_80073E0(gUnknown_203B274->unk37C); -} - -u32 sub_801F7E4(void) -{ - sub_808E218(gUnknown_203B274->unk4, gUnknown_203B274->pokeStruct); - return gUnknown_203B274->unk4->count; -} - - - - - -// THIS IS A NEW FILE - - - - -bool8 sub_801F808(u16 *moveIDs) -{ - s32 index; - - ResetSprites(TRUE); - gUnknown_203B278 = MemoryAlloc(sizeof(struct unkStruct_203B278), 8); - gUnknown_203B278->unk5C = 0; - gUnknown_203B278->unk60 = gUnknown_203B278->unk64; - sub_80140B4(gUnknown_203B278->unk64); - ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE); - gUnknown_203B278->moveIDs = moveIDs; - - for(index = 4; index > 1; index--) - { - if(gUnknown_203B278->moveIDs[index - 1] != 0) break; - } - sub_8013818(&gUnknown_203B278->unk28,index,1,gUnknown_203B278->unk5C); - sub_801317C(&gUnknown_203B278->unkC8); - sub_801F918(0); - return 1; -} - -u32 sub_801F890(void) -{ - switch (gUnknown_203B278->state) { - case 0: - sub_801FA58(); - break; - case 1: - sub_801FAD4(); - break; - case 3: - return 3; - default: - case 2: - return 2; - } - return 0; -} - -void sub_801F8D0(void) -{ - if(gUnknown_203B278) - { - gUnknown_203B278->unk64[gUnknown_203B278->unk5C] = gUnknown_80DC2F8; - ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE); - MemoryFree(gUnknown_203B278); - gUnknown_203B278 = NULL; - } -} - -void sub_801F918(s32 newState) -{ - gUnknown_203B278->state = newState; - sub_801F930(); - sub_801F9A4(); -} - -void sub_801F930(void) -{ - sub_80140B4(gUnknown_203B278->unk64); - switch(gUnknown_203B278->state) - { - case 0: - gUnknown_203B278->unk60->unk14 = gUnknown_203B278->unkC4; - gUnknown_203B278->unkC4[0] = gUnknown_203B278->unk28.unk20; - gUnknown_203B278->unkC4[1] = gUnknown_203B278->unk28.unk1E; - gUnknown_203B278->unkC4[2] = 0x10; - gUnknown_203B278->unkC4[3] = 0; - ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE); - break; - case 1: - ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE); - break; - default: - break; - } -} - -void sub_801F9A4(void) -{ - u8 **name; - - switch (gUnknown_203B278->state) { - case 0: - sub_8008C54(gUnknown_203B278->unk5C); - gUnknown_203B278->unk8 = gUnknown_203B278->moveIDs[gUnknown_203B278->unk28.unk1E]; - gUnknown_203B278->unk10 = unk_MoveIDPrintMoveDescription(gUnknown_203B278->unk28.unk1E,gUnknown_203B278->unk8,gUnknown_203B278->unk5C,gUnknown_203B278->unk14); - gUnknown_203B278->unk24 = 0; - break; - case 1: - sub_8008C54(gUnknown_203B278->unk5C); - sub_80073B8(gUnknown_203B278->unk5C); - name = &(gUnknown_203B278->unk14[gUnknown_203B278->unkC]->pokeName); - strcpy(gAvailablePokemonNames, *name); - xxx_format_and_draw(0x10,0,gUnknown_80DC310,gUnknown_203B278->unk5C,0); // $m0 - xxx_format_and_draw(4,0x10,gUnknown_203B278->unk14[gUnknown_203B278->unkC]->unk4,gUnknown_203B278->unk5C,0); - sub_80073E0(gUnknown_203B278->unk5C); - break; - case 2: - break; - } -} - -void sub_801FA58(void) -{ - if(gUnknown_203B278->unk10 != 0) - { - if(gUnknown_203B278->unk24 & 8) - { - sub_8013F84(); - } - gUnknown_203B278->unk24++; - } - switch(sub_8012A64(&gUnknown_203B278->unkC8, gUnknown_203B278->unk5C)) - { - case 1: - PlayMenuSoundEffect(0); - if(gUnknown_203B278->unk10 != 0) - { - gUnknown_203B278->unkC = 0; - sub_801F918(1); - } - else - { - sub_801F918(3); - } - break; - case 2: - PlayMenuSoundEffect(1); - sub_801F918(2); - break; - default: - if(sub_8013938(&gUnknown_203B278->unk28)) - { - sub_801F918(0); - } - } -} - -void sub_801FAD4(void) -{ - if(gUnknown_203B278->unkC < gUnknown_203B278->unk10 - 1) - { - if(gUnknown_203B278->unk24 & 8) - { - sub_8013F84(); - } - gUnknown_203B278->unk24++; - } - switch(sub_8012A64(&gUnknown_203B278->unkC8, gUnknown_203B278->unk5C)) - { - case 1: - PlayMenuSoundEffect(0); - gUnknown_203B278->unkC++; - if(gUnknown_203B278->unkC < gUnknown_203B278->unk10) - { - sub_801F918(1); - } - else { - sub_801F918(0); - } - break; - case 2: - PlayMenuSoundEffect(1); - sub_801F918(2); - break; - } -} diff --git a/src/code_801F428.c b/src/code_801F428.c new file mode 100644 index 000000000..d726236b2 --- /dev/null +++ b/src/code_801F428.c @@ -0,0 +1,218 @@ +#include "global.h" +#include "globaldata.h" +#include "code_80118A4.h" +#include "code_800D090.h" +#include "input.h" +#include "memory.h" +#include "menu_input.h" +#include "moves.h" +#include "pokemon.h" +#include "text1.h" +#include "text2.h" + +struct unkStruct_203B274 +{ + // size: 0x3e8 + PokemonStruct1 *pokeStruct; + unkStruct_808E218_arg *unk4; + unkStruct_808E218_arg unk8; + MenuInputStruct input; + s32 unk37C; + UnkTextStruct2 *unk380; + UnkTextStruct2 unk384[4]; + u8 unk3E4[4]; +}; +extern struct unkStruct_203B274 *gUnknown_203B274; + +extern u8 gAvailablePokemonNames[]; + +static const UnkTextStruct2 sUnknown_80DC2AC = { + 0, 0, 0, 0, + 3, + 0, 0, + 0, 0, + 0, 0, + NULL +}; +static const UnkTextStruct2 sUnknown_80DC2C4 = { + 0, 0, 0, 0, + 6, + 2, 2, + 0xF, 4, + 6, 0, + NULL +}; + + +ALIGNED(4) const u8 gUnknown_80DC2DC[] = _("Moves Page: %d/%d "); + +u32 sub_801F7E4(void); +void sub_801F690(void); +void sub_801F700(void); + + +bool8 sub_801F428(s16 index, s32 param_2) +{ + s32 index_s32 = index; + gUnknown_203B274 = MemoryAlloc(sizeof(struct unkStruct_203B274), 0x8); + gUnknown_203B274->pokeStruct = &gRecruitedPokemonRef->pokemon[index_s32]; + gUnknown_203B274->unk4 = &gUnknown_203B274->unk8; + gUnknown_203B274->unk37C = param_2; + gUnknown_203B274->unk380 = &gUnknown_203B274->unk384[gUnknown_203B274->unk37C]; + sub_8006518(gUnknown_203B274->unk384); + gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = sUnknown_80DC2C4; + gUnknown_203B274->unk380->unk14 = gUnknown_203B274->unk3E4; + gUnknown_203B274->unk3E4[0] = 1; + gUnknown_203B274->unk3E4[1] = 0; + gUnknown_203B274->unk3E4[2] = 0xC; + gUnknown_203B274->unk3E4[3] = 0; + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B274->unk384, TRUE, TRUE); + sub_8013818(&gUnknown_203B274->input, sub_801F7E4(), 4, param_2); + sub_801F690(); + sub_801F700(); + return TRUE; +} + +u32 sub_801F520(u8 param_1) +{ + if (param_1 == 0) { + sub_8013660(&gUnknown_203B274->input); + return 0; + } + else { + switch(GetKeyPress(&gUnknown_203B274->input)) + { + case 2: + PlayMenuSoundEffect(1); + return 2; + case 1: + PlayMenuSoundEffect(0); + return 3; + case 4: + PlayMenuSoundEffect(4); + return 4; + default: + break; + } + if (sub_80138B8(&gUnknown_203B274->input,1) != 0) { + sub_801F690(); + sub_801F700(); + return 1; + } + else { + return 0; + } + } +} + +u16 sub_801F5B4(void) +{ + return gUnknown_203B274->unk4->unk0[gUnknown_203B274->input.unk1E * gUnknown_203B274->input.unk1C + gUnknown_203B274->input.menuIndex]; +} + +void sub_801F5F0(bool8 r0) +{ + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B274->unk384, FALSE, FALSE); + sub_8013984(&gUnknown_203B274->input); + sub_801F690(); + sub_801F700(); + if(r0) + AddMenuCursorSprite(&gUnknown_203B274->input); +} + +void sub_801F63C(void) +{ + if(gUnknown_203B274 != NULL) + { + gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = sUnknown_80DC2AC; + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B274->unk384, TRUE, TRUE); + MemoryFree(gUnknown_203B274); + gUnknown_203B274 = NULL; + } +} + +NAKED // sub_80095E4 memes +void sub_801F690(void) +{ + asm_unified( + "\tpush {r4,r5,lr}\n" + "\tldr r5, _0801F6F4\n" + "\tldr r0, [r5]\n" + "\tldr r1, _0801F6F8\n" + "\tadds r0, r1\n" + "\tmovs r2, 0\n" + "\tldrsh r0, [r0, r2]\n" + "\tmovs r1, 0xC\n" + "\tbl sub_80095E4\n" + "\tadds r0, 0x2\n" + "\tlsls r0, 16\n" + "\tldr r3, [r5]\n" + "\tmovs r1, 0xDF\n" + "\tlsls r1, 2\n" + "\tadds r4, r3, r1\n" + "\tldr r2, [r4]\n" + "\tlsls r1, r2, 1\n" + "\tadds r1, r2\n" + "\tlsls r1, 3\n" + "\tadds r1, r3, r1\n" + "\tldr r2, _0801F6FC\n" + "\tadds r1, r2\n" + "\tasrs r2, r0, 16\n" + "\tlsrs r0, 16\n" + "\tstrh r0, [r1]\n" + "\tldr r1, [r4]\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r1\n" + "\tlsls r0, 3\n" + "\tadds r3, r0\n" + "\tadds r2, 0x2\n" + "\tmovs r0, 0xE5\n" + "\tlsls r0, 2\n" + "\tadds r3, r0\n" + "\tstrh r2, [r3]\n" + "\tbl ResetUnusedInputStruct\n" + "\tldr r0, [r5]\n" + "\tmovs r1, 0xE1\n" + "\tlsls r1, 2\n" + "\tadds r0, r1\n" + "\tmovs r1, 0x1\n" + "\tmovs r2, 0x1\n" + "\tbl sub_800641C\n" + "\tpop {r4,r5}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" +"_0801F6F4: .4byte gUnknown_203B274\n" +"_0801F6F8: .4byte 0x00000362\n" +"_0801F6FC: .4byte 0x00000392"); +} + +void sub_801F700(void) +{ + u32 y; + int index; + u8 buffer2 [48]; + u8 buffer1 [128]; + + sub_8008C54(gUnknown_203B274->unk37C); + sub_80073B8(gUnknown_203B274->unk37C); + sprintfStatic(buffer1,gUnknown_80DC2DC,gUnknown_203B274->input.unk1E + 1,gUnknown_203B274->input.unk20); // Moves Page: %d/%d + xxx_call_draw_string(0x10,0,buffer1,gUnknown_203B274->unk37C,0); + for(index = 0; index < gUnknown_203B274->input.unk1A; index++) + { + sub_8092C84(buffer2,gUnknown_203B274->unk4->unk0[gUnknown_203B274->input.unk1E * gUnknown_203B274->input.unk1C + index]); + y = sub_8013800(&gUnknown_203B274->input, index); + xxx_call_draw_string(8,y,buffer2,gUnknown_203B274->unk37C,0); + } + sub_80073E0(gUnknown_203B274->unk37C); +} + +u32 sub_801F7E4(void) +{ + sub_808E218(gUnknown_203B274->unk4, gUnknown_203B274->pokeStruct); + return gUnknown_203B274->unk4->count; +} + diff --git a/src/code_801F808.c b/src/code_801F808.c new file mode 100644 index 000000000..969c6fbb8 --- /dev/null +++ b/src/code_801F808.c @@ -0,0 +1,227 @@ +#include "global.h" +#include "globaldata.h" +#include "code_80130A8.h" +#include "code_80118A4.h" +#include "input.h" +#include "memory.h" +#include "menu_input.h" +#include "moves.h" +#include "sprite.h" +#include "structs/menu.h" +#include "structs/str_text.h" +#include "text1.h" +#include "text2.h" + +extern u8 gAvailablePokemonNames[]; + +struct unkStruct_203B278 +{ + s32 state; + u16 *moveIDs; + u16 unk8; + u16 fillA; + s32 unkC; + s32 unk10; + struct subStruct_203B240 *unk14[4]; + u32 unk24; + MenuInputStruct unk28; + u32 unk5C; + UnkTextStruct2 *unk60; + UnkTextStruct2 unk64[4]; + u8 unkC4[4]; + MenuInputStructSub unkC8; +}; + +extern struct unkStruct_203B278 *gUnknown_203B278; + +static const UnkTextStruct2 sUnknown_80DC2F8 = { + 0, 0, 0, 0, + 3, + 0, 0, + 0, 0, + 0, 0, + NULL +}; + +const u8 gUnknown_80DC310[] = _("{ARG_POKEMON_0}"); + +extern void sub_801F918(s32); +extern void sub_801FA58(void); +extern void sub_801FAD4(void); +extern void sub_801F930(void); +extern void sub_801F9A4(void); + +bool8 sub_801F808(u16 *moveIDs) +{ + s32 index; + + ResetSprites(TRUE); + gUnknown_203B278 = MemoryAlloc(sizeof(struct unkStruct_203B278), 8); + gUnknown_203B278->unk5C = 0; + gUnknown_203B278->unk60 = gUnknown_203B278->unk64; + sub_80140B4(gUnknown_203B278->unk64); + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE); + gUnknown_203B278->moveIDs = moveIDs; + + for(index = 4; index > 1; index--) + { + if(gUnknown_203B278->moveIDs[index - 1] != 0) break; + } + sub_8013818(&gUnknown_203B278->unk28,index,1,gUnknown_203B278->unk5C); + sub_801317C(&gUnknown_203B278->unkC8); + sub_801F918(0); + return 1; +} + +u32 sub_801F890(void) +{ + switch (gUnknown_203B278->state) { + case 0: + sub_801FA58(); + break; + case 1: + sub_801FAD4(); + break; + case 3: + return 3; + default: + case 2: + return 2; + } + return 0; +} + +void sub_801F8D0(void) +{ + if(gUnknown_203B278) + { + gUnknown_203B278->unk64[gUnknown_203B278->unk5C] = sUnknown_80DC2F8; + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE); + MemoryFree(gUnknown_203B278); + gUnknown_203B278 = NULL; + } +} + +void sub_801F918(s32 newState) +{ + gUnknown_203B278->state = newState; + sub_801F930(); + sub_801F9A4(); +} + +void sub_801F930(void) +{ + sub_80140B4(gUnknown_203B278->unk64); + switch(gUnknown_203B278->state) + { + case 0: + gUnknown_203B278->unk60->unk14 = gUnknown_203B278->unkC4; + gUnknown_203B278->unkC4[0] = gUnknown_203B278->unk28.unk20; + gUnknown_203B278->unkC4[1] = gUnknown_203B278->unk28.unk1E; + gUnknown_203B278->unkC4[2] = 0x10; + gUnknown_203B278->unkC4[3] = 0; + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE); + break; + case 1: + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE); + break; + default: + break; + } +} + +void sub_801F9A4(void) +{ + u8 **name; + + switch (gUnknown_203B278->state) { + case 0: + sub_8008C54(gUnknown_203B278->unk5C); + gUnknown_203B278->unk8 = gUnknown_203B278->moveIDs[gUnknown_203B278->unk28.unk1E]; + gUnknown_203B278->unk10 = unk_MoveIDPrintMoveDescription(gUnknown_203B278->unk28.unk1E,gUnknown_203B278->unk8,gUnknown_203B278->unk5C,gUnknown_203B278->unk14); + gUnknown_203B278->unk24 = 0; + break; + case 1: + sub_8008C54(gUnknown_203B278->unk5C); + sub_80073B8(gUnknown_203B278->unk5C); + name = &(gUnknown_203B278->unk14[gUnknown_203B278->unkC]->pokeName); + strcpy(gAvailablePokemonNames, *name); + xxx_format_and_draw(0x10,0,gUnknown_80DC310,gUnknown_203B278->unk5C,0); // $m0 + xxx_format_and_draw(4,0x10,gUnknown_203B278->unk14[gUnknown_203B278->unkC]->unk4,gUnknown_203B278->unk5C,0); + sub_80073E0(gUnknown_203B278->unk5C); + break; + case 2: + break; + } +} + +void sub_801FA58(void) +{ + if(gUnknown_203B278->unk10 != 0) + { + if(gUnknown_203B278->unk24 & 8) + { + sub_8013F84(); + } + gUnknown_203B278->unk24++; + } + switch(sub_8012A64(&gUnknown_203B278->unkC8, gUnknown_203B278->unk5C)) + { + case 1: + PlayMenuSoundEffect(0); + if(gUnknown_203B278->unk10 != 0) + { + gUnknown_203B278->unkC = 0; + sub_801F918(1); + } + else + { + sub_801F918(3); + } + break; + case 2: + PlayMenuSoundEffect(1); + sub_801F918(2); + break; + default: + if(sub_8013938(&gUnknown_203B278->unk28)) + { + sub_801F918(0); + } + } +} + +void sub_801FAD4(void) +{ + if(gUnknown_203B278->unkC < gUnknown_203B278->unk10 - 1) + { + if(gUnknown_203B278->unk24 & 8) + { + sub_8013F84(); + } + gUnknown_203B278->unk24++; + } + switch(sub_8012A64(&gUnknown_203B278->unkC8, gUnknown_203B278->unk5C)) + { + case 1: + PlayMenuSoundEffect(0); + gUnknown_203B278->unkC++; + if(gUnknown_203B278->unkC < gUnknown_203B278->unk10) + { + sub_801F918(1); + } + else { + sub_801F918(0); + } + break; + case 2: + PlayMenuSoundEffect(1); + sub_801F918(2); + break; + } +} + From 5ee826049ee4969f88e1bcf9035d22b66ba473eb Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 19 Feb 2024 16:13:28 -0800 Subject: [PATCH 08/14] move more data to src --- data/data_8107010.s | 104 ---------------------------------------- ld_script.txt | 2 + src/code_8048480.c | 3 +- src/data/code_8048480.h | 21 ++++++++ src/data/items.h | 36 ++++++++++++++ src/items.c | 4 +- 6 files changed, 63 insertions(+), 107 deletions(-) create mode 100644 src/data/code_8048480.h create mode 100644 src/data/items.h diff --git a/data/data_8107010.s b/data/data_8107010.s index fb383eac7..8c9831a4e 100644 --- a/data/data_8107010.s +++ b/data/data_8107010.s @@ -1959,107 +1959,3 @@ gReqIQSkillPts: @ 810A390 .byte 0x01, 0x00, 0x00, 0x00 .byte 0x01, 0x00, 0x00, 0x00 .byte 0x01, 0x00, 0x00, 0x00 - -.global gUnknown_810A3F0 -gUnknown_810A3F0: @ 810A3F0 (money related according to PMDe -@ LUT for money item stack size -> money amount -.4byte 4, 6, 10, 14, 22, 26, 34, 38, 46, 58 -.4byte 62, 74, 82, 86, 94, 106, 118, 122, 134, 142 -.4byte 146, 158, 166, 178, 194, 202, 206, 214, 218, 226 -.4byte 254, 262, 274, 278, 298, 302, 314, 326, 334, 346 -.4byte 358, 362, 382, 386, 394, 398, 422, 446, 454, 458 -.4byte 466, 478, 482, 502, 514, 526, 538, 542, 554, 562 -.4byte 566, 586, 614, 622, 626, 634, 662, 674, 694, 698 -.4byte 706, 718, 734, 746, 758, 768, 778, 794, 802, 818 -.4byte 838, 842, 862, 866, 878, 886, 898, 914, 922, 926 -.4byte 934, 958, 974, 982, 998, 1000, 1100, 1300, 1500, 20000 - -.global gTypeGummiIQBoost -gTypeGummiIQBoost: @ 810A580 -// s16[0x12][NUMBER_OF_GUMMIS = 18] -// relates [type][gummi tyep] -> iq boost amount -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 -.byte 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 -.byte 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, 0x04, 0x00 -.byte 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00 -.byte 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00 -.byte 0x02, 0x00, 0x07, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 -.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00 -.byte 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00 -.byte 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 -.byte 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00 -.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 -.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00 -.byte 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 -.byte 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00 -.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00 -.byte 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00 -.byte 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00 -.byte 0x07, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 -.byte 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00 -.byte 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00 -.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 -.byte 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x07, 0x00, 0x03, 0x00 -.byte 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00 -.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00 -.byte 0x03, 0x00, 0x07, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00 -.byte 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00 -.byte 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x07, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00 -.byte 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00 -.byte 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00 -.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00 -.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00 -.byte 0x02, 0x00, 0x03, 0x00, 0x07, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00 -.byte 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 -.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00 -.byte 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00 -.byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00 -.byte 0x07, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00 -.byte 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00 -.byte 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x07, 0x00 - -.global gUnknown_810A808 -gUnknown_810A808: @ 810A808 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00 -.byte 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00 -.byte 0x05, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x3c, 0x00, 0x1e, 0x00 -.byte 0x14, 0x00, 0x19, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00 -.byte 0x14, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00, 0x00, 0x00, 0x19, 0x00 -.byte 0x14, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00 -.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00 -.byte 0x00, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x3c, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x19, 0x00 -.byte 0x1e, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00 -.byte 0x19, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x3c, 0x00 -.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00 -.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00, 0x00, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00 -.byte 0x19, 0x00, 0x19, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00 -.byte 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x19, 0x00 -.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x3c, 0x00, 0x19, 0x00, 0x19, 0x00 -.byte 0x1e, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00, 0x19, 0x00 -.byte 0x00, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00 -.byte 0x3c, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00 -.byte 0x19, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x05, 0x00 -.byte 0x1e, 0x00, 0x19, 0x00, 0x14, 0x00, 0x3c, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00 -.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00 -.byte 0x14, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x19, 0x00, 0x05, 0x00, 0x3c, 0x00, 0x19, 0x00 -.byte 0x14, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00 -.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00 -.byte 0x19, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00 -.byte 0x00, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00 -.byte 0x19, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00 -.byte 0x19, 0x00, 0x19, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x19, 0x00 -.byte 0x19, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x3c, 0x00 -.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x19, 0x00, 0x19, 0x00 -.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x05, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1e, 0x00 -.byte 0x14, 0x00, 0x19, 0x00, 0x3c, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00 -.byte 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00 -.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x3c, 0x00, 0x19, 0x00, 0x19, 0x00 -.byte 0x00, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1e, 0x00 -.byte 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x14, 0x00, 0x19, 0x00 -.byte 0x3c, 0x00, 0x19, 0x00, 0x00, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x14, 0x00, 0x19, 0x00 -.byte 0x14, 0x00, 0x1e, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00 -.byte 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x3c, 0x00 diff --git a/ld_script.txt b/ld_script.txt index c494c0d3a..f64c7e8d8 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -547,6 +547,8 @@ SECTIONS { src/dungeon_capabilities.o(.rodata); src/dungeon_ai_targeting.o(.rodata); data/data_8107010.o(.rodata); + src/items.o(.rodata); + src/code_8048480.o(.rodata); src/friend_area.o(.rodata); data/data_810AC60.o(.rodata); src/tile_types.o(.rodata); diff --git a/src/code_8048480.c b/src/code_8048480.c index f58c96e44..f7977bd3c 100644 --- a/src/code_8048480.c +++ b/src/code_8048480.c @@ -24,7 +24,6 @@ extern u8 gAvailablePokemonNames[]; extern u8 gUnknown_202DE58[]; extern s16 gTypeGummiIQBoost[NUM_TYPES][NUMBER_OF_GUMMIS]; -extern s16 gUnknown_810A808[NUM_TYPES][NUMBER_OF_GUMMIS]; extern u8 *gUnknown_80F89F4[]; extern u8 *gUnknown_80FB580[]; @@ -66,6 +65,8 @@ extern u8 *gUnknown_80FECA0[]; extern u8 *gUnknown_80FE3E8[]; extern u8 *gUnknown_80F9BD8[]; +#include "data/code_8048480.h" + extern void sub_80421C0(Entity *r0, u16 r1); extern void sub_8078B5C(Entity *, Entity *, u32, u32, u32); extern u8 sub_806A538(s32); diff --git a/src/data/code_8048480.h b/src/data/code_8048480.h new file mode 100644 index 000000000..736cf6472 --- /dev/null +++ b/src/data/code_8048480.h @@ -0,0 +1,21 @@ +const s16 gUnknown_810A808[NUM_TYPES][NUMBER_OF_GUMMIS] = +{ + [TYPE_NONE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + [TYPE_NORMAL] = {0x00, 0x3c, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x05, 0x19, 0x19, 0x19}, + [TYPE_FIRE] = {0x00, 0x19, 0x3c, 0x1e, 0x14, 0x19, 0x14, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x14}, + [TYPE_WATER] = {0x00, 0x19, 0x14, 0x3c, 0x1e, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14}, + [TYPE_GRASS] = {0x00, 0x19, 0x1e, 0x14, 0x3c, 0x14, 0x1e, 0x19, 0x1e, 0x14, 0x1e, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19}, + [TYPE_ELECTRIC] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x19, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14}, + [TYPE_ICE] = {0x00, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x3c, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x1e}, + [TYPE_FIGHTING] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x1e, 0x1e, 0x14, 0x14, 0x19, 0x19, 0x14, 0x19}, + [TYPE_POISON] = {0x00, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x14, 0x3c, 0x1e, 0x19, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19}, + [TYPE_GROUND] = {0x00, 0x19, 0x19, 0x1e, 0x1e, 0x05, 0x1e, 0x19, 0x14, 0x3c, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x19, 0x19}, + [TYPE_FLYING] = {0x00, 0x19, 0x19, 0x19, 0x14, 0x1e, 0x1e, 0x14, 0x19, 0x05, 0x3c, 0x19, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x19}, + [TYPE_PSYCHIC] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x19, 0x3c, 0x1e, 0x19, 0x1e, 0x19, 0x1e, 0x19}, + [TYPE_BUG] = {0x00, 0x19, 0x1e, 0x19, 0x14, 0x19, 0x19, 0x14, 0x19, 0x14, 0x1e, 0x19, 0x3c, 0x1e, 0x19, 0x19, 0x19, 0x19}, + [TYPE_ROCK] = {0x00, 0x14, 0x14, 0x1e, 0x1e, 0x19, 0x19, 0x1e, 0x14, 0x1e, 0x14, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x19, 0x1e}, + [TYPE_GHOST] = {0x00, 0x05, 0x19, 0x19, 0x19, 0x19, 0x19, 0x05, 0x14, 0x19, 0x19, 0x1e, 0x14, 0x19, 0x3c, 0x19, 0x1e, 0x19}, + [TYPE_DRAGON] = {0x00, 0x19, 0x14, 0x14, 0x14, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19}, + [TYPE_DARK] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x05, 0x1e, 0x19, 0x14, 0x19, 0x3c, 0x19}, + [TYPE_STEEL] = {0x00, 0x14, 0x1e, 0x19, 0x14, 0x19, 0x14, 0x1e, 0x05, 0x1e, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x3c}, +}; diff --git a/src/data/items.h b/src/data/items.h new file mode 100644 index 000000000..51e536dfe --- /dev/null +++ b/src/data/items.h @@ -0,0 +1,36 @@ +// LUT for money item stack size -> money amount +const s32 gUnknown_810A3F0[100] = { + 4, 6, 10, 14, 22, 26, 34, 38, 46, 58, + 62, 74, 82, 86, 94, 106, 118, 122, 134, 142, + 146, 158, 166, 178, 194, 202, 206, 214, 218, 226, + 254, 262, 274, 278, 298, 302, 314, 326, 334, 346, + 358, 362, 382, 386, 394, 398, 422, 446, 454, 458, + 466, 478, 482, 502, 514, 526, 538, 542, 554, 562, + 566, 586, 614, 622, 626, 634, 662, 674, 694, 698, + 706, 718, 734, 746, 758, 768, 778, 794, 802, 818, + 838, 842, 862, 866, 878, 886, 898, 914, 922, 926, + 934, 958, 974, 982, 998, 1000, 1100, 1300, 1500, 20000}; + + +const s16 gTypeGummiIQBoost[NUM_TYPES][NUMBER_OF_GUMMIS] = +{ + [TYPE_NONE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + [TYPE_NORMAL] = {0x00, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x03}, + [TYPE_FIRE] = {0x00, 0x03, 0x07, 0x04, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, 0x03, 0x03, 0x02, 0x04, 0x03, 0x03, 0x03, 0x02}, + [TYPE_WATER] = {0x00, 0x03, 0x02, 0x07, 0x04, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02}, + [TYPE_GRASS] = {0x00, 0x03, 0x04, 0x02, 0x07, 0x02, 0x04, 0x03, 0x04, 0x02, 0x04, 0x03, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03}, + [TYPE_ELECTRIC] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03, 0x03, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02}, + [TYPE_ICE] = {0x00, 0x03, 0x04, 0x03, 0x03, 0x03, 0x07, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x04}, + [TYPE_FIGHTING] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03, 0x04, 0x04, 0x02, 0x02, 0x03, 0x03, 0x02, 0x03}, + [TYPE_POISON] = {0x00, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x07, 0x04, 0x03, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03}, + [TYPE_GROUND] = {0x00, 0x03, 0x03, 0x04, 0x04, 0x01, 0x04, 0x03, 0x02, 0x07, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x03}, + [TYPE_FLYING] = {0x00, 0x03, 0x03, 0x03, 0x02, 0x04, 0x04, 0x02, 0x03, 0x01, 0x07, 0x03, 0x02, 0x04, 0x03, 0x03, 0x03, 0x03}, + [TYPE_PSYCHIC] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x07, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03}, + [TYPE_BUG] = {0x00, 0x03, 0x04, 0x03, 0x02, 0x03, 0x03, 0x02, 0x03, 0x02, 0x04, 0x03, 0x07, 0x04, 0x03, 0x03, 0x03, 0x03}, + [TYPE_ROCK] = {0x00, 0x02, 0x02, 0x04, 0x04, 0x03, 0x03, 0x04, 0x02, 0x04, 0x02, 0x03, 0x03, 0x07, 0x03, 0x03, 0x03, 0x04}, + [TYPE_GHOST] = {0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x02, 0x03, 0x03, 0x04, 0x02, 0x03, 0x07, 0x03, 0x04, 0x03}, + [TYPE_DRAGON] = {0x00, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03}, + [TYPE_DARK] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x01, 0x04, 0x03, 0x02, 0x03, 0x07, 0x03}, + [TYPE_STEEL] = {0x00, 0x02, 0x04, 0x03, 0x02, 0x03, 0x02, 0x04, 0x01, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07}, + +}; diff --git a/src/items.c b/src/items.c index 77293bac8..8e3ac3c3a 100644 --- a/src/items.c +++ b/src/items.c @@ -1,6 +1,7 @@ #include "global.h" #include "code_8097DD0.h" #include "constants/colors.h" +#include "constants/type.h" #include "items.h" #include "moves.h" #include "random.h" @@ -23,12 +24,10 @@ extern u8 gUnknown_202DE58[]; extern u32 gUnknown_202DE30; extern u8* gPtrTypeText; // ptr to "Type\0" extern u8* gPtrPPD0Text; // ptr to "PP {ARG_VALUE_0} \0" -extern u32 gUnknown_810A3F0[100]; extern u32 gUnknown_81097E8[4]; // some sort of lookup table (16, 18, 20, 22) extern u32 gUnknown_81097F8[4]; // some sort of lookup table (17, 19, 21, 23) extern const char *gUnknown_810AF50[]; extern u8 gUnknown_8108F64[0x3f][32]; // some sort of bit lookup table -extern s16 gTypeGummiIQBoost[0x12][NUMBER_OF_GUMMIS]; extern u8 gInvalidItemIDs[0x10]; EWRAM_DATA OpenedFile *gItemParametersFile = {0}; @@ -40,6 +39,7 @@ extern s32 sub_8091E94(s32 a1, s32 a2, s32 a3); extern void SortKecleonShopInventory(); bool8 AddKecleonWareItem(u8); +#include "data/items.h" static void sub_8090F58(u8 *, u8 *, Item *, unkStruct_8090F58 *); From 4f4dc91976fd3fb21432eaabce788aef30351ae6 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 19 Feb 2024 16:50:03 -0800 Subject: [PATCH 09/14] Move more data to src in pokemon_3 --- data/data_8107010.s | 43 ------------------------------------------- ld_script.txt | 1 + src/data/pokemon_3.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/pokemon_3.c | 5 ++--- 4 files changed, 47 insertions(+), 46 deletions(-) create mode 100644 src/data/pokemon_3.h diff --git a/data/data_8107010.s b/data/data_8107010.s index 8c9831a4e..de57e169b 100644 --- a/data/data_8107010.s +++ b/data/data_8107010.s @@ -1916,46 +1916,3 @@ gTacticsTargetLeader: @ 810A36B .byte 0x01 .byte 0x00 .byte 0x00 - -.global gReqTacticLvls -gReqTacticLvls: @ 810A378 -@ replacing .incbin "baserom.gba", 0x0010a378, 0x18 -.2byte 1 -.2byte 25 -.2byte 1 -.2byte 1 -.2byte 999 -.2byte 999 -.2byte 35 -.2byte 40 -.2byte 20 -.2byte 15 -.2byte 10 -.2byte 999 - -.global gReqIQSkillPts -gReqIQSkillPts: @ 810A390 -.byte 0x0f, 0x27, 0x00, 0x00 -.byte 0x69, 0x00, 0x00, 0x00 -.byte 0x01, 0x00, 0x00, 0x00 -.byte 0x01, 0x00, 0x00, 0x00 -.byte 0xf4, 0x01, 0x00, 0x00 -.byte 0x64, 0x00, 0x00, 0x00 -.byte 0x02, 0x00, 0x00, 0x00 -.byte 0x28, 0x00, 0x00, 0x00 -.byte 0x19, 0x00, 0x00, 0x00 -.byte 0xc8, 0x00, 0x00, 0x00 -.byte 0x0a, 0x00, 0x00, 0x00 -.byte 0x7d, 0x00, 0x00, 0x00 -.byte 0x90, 0x01, 0x00, 0x00 -.byte 0xde, 0x03, 0x00, 0x00 -.byte 0x8c, 0x00, 0x00, 0x00 -.byte 0x20, 0x03, 0x00, 0x00 -.byte 0xfa, 0x00, 0x00, 0x00 -.byte 0xa0, 0x00, 0x00, 0x00 -.byte 0x46, 0x00, 0x00, 0x00 -.byte 0x58, 0x02, 0x00, 0x00 -.byte 0x2c, 0x01, 0x00, 0x00 -.byte 0x01, 0x00, 0x00, 0x00 -.byte 0x01, 0x00, 0x00, 0x00 -.byte 0x01, 0x00, 0x00, 0x00 diff --git a/ld_script.txt b/ld_script.txt index f64c7e8d8..f8e59bf5f 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -547,6 +547,7 @@ SECTIONS { src/dungeon_capabilities.o(.rodata); src/dungeon_ai_targeting.o(.rodata); data/data_8107010.o(.rodata); + src/pokemon_3.o(.rodata); src/items.o(.rodata); src/code_8048480.o(.rodata); src/friend_area.o(.rodata); diff --git a/src/data/pokemon_3.h b/src/data/pokemon_3.h new file mode 100644 index 000000000..6bd52d6a2 --- /dev/null +++ b/src/data/pokemon_3.h @@ -0,0 +1,44 @@ +const s16 gReqTacticLvls[NUM_TACTICS] = +{ + [TACTIC_LETS_GO_TOGETHER] = 1, + [TACTIC_GO_THE_OTHER_WAY] = 25, + [TACTIC_GO_AFTER_FOES] = 1, + [TACTIC_AVOID_THE_FIRST_HIT] = 1, + [TACTIC_ALL_FOR_ONE] = 999, + [TACTIC_GROUP_SAFETY] = 999, + [TACTIC_AVOID_TROUBLE] = 35, + [TACTIC_BE_PATIENT] = 40, + [TACTIC_KEEP_YOUR_DISTANCE] = 20, + [TACTIC_WAIT_THERE] = 15, + [TACTIC_GET_AWAY] = 10, + [TACTIC_UNUSED] = 999, +}; + + +const s32 gReqIQSkillPts[NUM_IQ_SKILLS] = +{ + [IQ_NONE] = 9999, + [IQ_TYPE_ADVANTAGE_MASTER] = 105, + [IQ_ITEM_CATCHER] = 1, + [IQ_COURSE_CHECKER] = 1, + [IQ_SURE_HIT_ATTACKER] = 500, + [IQ_QUICK_DODGER] = 100, + [IQ_PP_CHECKER] = 2, + [IQ_NONTRAITOR] = 40, + [IQ_STATUS_CHECKER] = 25, + [IQ_EXP_GO_GETTER] = 200, + [IQ_EFFICIENCY_EXPERT] = 10, + [IQ_WEAK_TYPE_PICKER] = 125, + [IQ_ALL_TERRAIN_HIKER] = 400, + [IQ_SUPER_MOBILE] = 990, + [IQ_TRAP_AVOIDER] = 140, + [IQ_HOUSE_AVOIDER] = 800, + [IQ_ENERGY_SAVER] = 250, + [IQ_NONSLEEPER] = 160, + [IQ_SELF_CURER] = 70, + [IQ_TRAP_SEER] = 600, + [IQ_LAVA_EVADER] = 300, + [IQ_DEDICATED_TRAVELER] = 1, + [IQ_ITEM_MASTER] = 1, + [IQ_EXCLUSIVE_MOVE_USER] = 1, +}; diff --git a/src/pokemon_3.c b/src/pokemon_3.c index ff5852d12..1af0c70e8 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -18,9 +18,6 @@ extern u8 *gIQSkillDescriptions[]; extern u8 *gTacticsDescriptions[]; extern u8 *gTactics[]; extern bool8 gTacticsTargetLeader[]; - -extern s16 gReqTacticLvls[]; -extern s32 gReqIQSkillPts[]; extern u32 gIQSkillGroups[]; struct unkStruct_808E9EC @@ -46,6 +43,8 @@ extern s16 gUnknown_810AC66; // 0x8 // 2, 4, 6, 7, 8, 9, 0xA, 0xD, 0xF, 0x11 extern s32 gUnknown_810AC90[10]; +#include "data/pokemon_3.h" + extern void SaveDungeonLocation(struct unkStruct_8094924*, DungeonLocation*); extern void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924*, struct unkPokeSubStruct_C*); void RestoreDungeonLocation(struct unkStruct_8094924*, DungeonLocation*); From ca2d1943e925101e6a02f7e84d9b60d8a6eff81b Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 3 Mar 2024 20:26:46 -0800 Subject: [PATCH 10/14] Nonmatch SketchMoveAction for now --- asm/code_8057824.s | 126 -------------------------------- ld_script.txt | 1 - src/code_8057824.c | 175 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 175 insertions(+), 127 deletions(-) delete mode 100644 asm/code_8057824.s diff --git a/asm/code_8057824.s b/asm/code_8057824.s deleted file mode 100644 index 382b6882b..000000000 --- a/asm/code_8057824.s +++ /dev/null @@ -1,126 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start SketchMoveAction -SketchMoveAction: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r6, r0, 0 - adds r7, r1, 0 - adds r5, r2, 0 - movs r0, 0 - mov r10, r0 - ldr r1, [r6, 0x70] - str r1, [sp] - ldr r0, [r7, 0x70] - movs r2, 0 - mov r12, r2 - movs r4, 0 - movs r1, 0x8C - lsls r1, 1 - adds r3, r0, r1 - adds r1, r0, 0 - movs r2, 0x1 - mov r9, r2 - movs r0, 0x10 - mov r8, r0 -_08059372: - ldrb r2, [r3] - mov r0, r9 - ands r0, r2 - cmp r0, 0 - beq _08059384 - mov r0, r8 - ands r0, r2 - cmp r0, 0 - bne _080593A8 -_08059384: - adds r3, 0x8 - adds r1, 0x8 - adds r4, 0x1 - cmp r4, 0x3 - ble _08059372 - movs r0, 0 - cmp r0, 0 - bne _080593B2 - ldr r0, _080593A4 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r7, 0 - bl sub_80522F4 - movs r0, 0 - b _0805940A - .align 2, 0 -_080593A4: .4byte gUnknown_80FE3BC -_080593A8: - movs r2, 0x8D - lsls r2, 1 - adds r0, r1, r2 - ldrh r0, [r0] - mov r12, r0 -_080593B2: - mov r0, r12 - cmp r0, 0 - bne _080593CC - ldr r0, _080593C8 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r7, 0 - bl sub_80522F4 - b _08059408 - .align 2, 0 -_080593C8: .4byte gUnknown_80FE3BC -_080593CC: - adds r0, r5, 0 - mov r1, r12 - bl InitPokemonMove - ldr r0, _0805941C - adds r1, r5, 0 - movs r2, 0 - bl sub_80928C0 - ldrb r1, [r5, 0x1] - movs r0, 0x4 - orrs r0, r1 - movs r1, 0x20 - orrs r0, r1 - strb r0, [r5, 0x1] - ldr r0, _08059420 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r7, 0 - bl sub_80522F4 - ldr r1, [sp] - adds r1, 0xFB - ldrb r0, [r1] - cmp r0, 0 - bne _08059404 - movs r0, 0x1 - strb r0, [r1] -_08059404: - movs r1, 0x1 - mov r10, r1 -_08059408: - mov r0, r10 -_0805940A: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805941C: .4byte gUnknown_202DE58 -_08059420: .4byte gUnknown_80FE38C - thumb_func_end SketchMoveAction - - .align 2, 0 diff --git a/ld_script.txt b/ld_script.txt index f8e59bf5f..b8dfdea37 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -226,7 +226,6 @@ SECTIONS { src/charge_move.o(.text); src/move_util.o(.text); src/code_8057824.o(.text); - asm/code_8057824.o(.text); src/code_805A120.o(.text); src/status_actions.o(.text); src/move_checks.o(.text); diff --git a/src/code_8057824.c b/src/code_8057824.c index 0c1bd45bb..19e8e9cc7 100644 --- a/src/code_8057824.c +++ b/src/code_8057824.c @@ -34,6 +34,8 @@ extern u8 gUnknown_202DE58[]; extern u8 gAvailablePokemonNames[]; extern u8 gUnknown_202DFE8[]; +extern u8 *gUnknown_80FE3BC[]; +extern u8 *gUnknown_80FE38C[]; extern u8 *gUnknown_80FC888[]; extern u8 *gUnknown_80FC8C0[]; extern s16 gUnknown_80F4DEA; @@ -1718,3 +1720,176 @@ bool8 SkillSwapMoveAction(Entity *pokemon, Entity *target, Move *move, s32 param } return flag; } + +// https://decomp.me/scratch/Ul8x5 +#ifdef NONMATCHING +bool32 SketchMoveAction(struct Entity *pokemon, struct Entity *target, struct Move *move) +{ + u16 moveID; + struct EntityInfo *targetInfo; + struct EntityInfo *pokeInfo; + int moveIndex; + register bool32 flag asm("sl"); + struct Move *move1; + s32 other_flag = 0; + + flag = 0; + pokeInfo = pokemon->info; + targetInfo = target->info; + moveID = 0; + + for(moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) + { + move1 = &targetInfo->moves[moveIndex]; + if ((((move1->moveFlags & MOVE_FLAG_EXISTS))) && ((targetInfo->moves[moveIndex].moveFlags & 0x10))) { + moveID = targetInfo->moves[moveIndex].id; + goto _moveIDcheck; + } + } + + if(other_flag == 0) + { + sub_80522F4(pokemon, target, *gUnknown_80FE3BC); + return 0; + } + +_moveIDcheck: + if (moveID == 0) { + sub_80522F4(pokemon, target, *gUnknown_80FE3BC); + } + else { + InitPokemonMove(move, moveID); + sub_80928C0(gUnknown_202DE58, move, 0); + move->moveFlags2 |= MOVE_FLAG2_UNK4; + move->moveFlags2 |= MOVE_FLAG_REPLACE; + sub_80522F4(pokemon, target, *gUnknown_80FE38C); + if (pokeInfo->unkFB == 0) { + pokeInfo->unkFB = 1; + } + flag = 1; + } + return flag; +} + +#else +NAKED +bool32 SketchMoveAction(struct Entity *pokemon, struct Entity *target, struct Move *move) +{ + asm_unified( + "\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x4\n" + "\tadds r6, r0, 0\n" + "\tadds r7, r1, 0\n" + "\tadds r5, r2, 0\n" + "\tmovs r0, 0\n" + "\tmov r10, r0\n" + "\tldr r1, [r6, 0x70]\n" + "\tstr r1, [sp]\n" + "\tldr r0, [r7, 0x70]\n" + "\tmovs r2, 0\n" + "\tmov r12, r2\n" + "\tmovs r4, 0\n" + "\tmovs r1, 0x8C\n" + "\tlsls r1, 1\n" + "\tadds r3, r0, r1\n" + "\tadds r1, r0, 0\n" + "\tmovs r2, 0x1\n" + "\tmov r9, r2\n" + "\tmovs r0, 0x10\n" + "\tmov r8, r0\n" +"_08059372:\n" + "\tldrb r2, [r3]\n" + "\tmov r0, r9\n" + "\tands r0, r2\n" + "\tcmp r0, 0\n" + "\tbeq _08059384\n" + "\tmov r0, r8\n" + "\tands r0, r2\n" + "\tcmp r0, 0\n" + "\tbne _080593A8\n" +"_08059384:\n" + "\tadds r3, 0x8\n" + "\tadds r1, 0x8\n" + "\tadds r4, 0x1\n" + "\tcmp r4, 0x3\n" + "\tble _08059372\n" + "\tmovs r0, 0\n" + "\tcmp r0, 0\n" + "\tbne _080593B2\n" + "\tldr r0, _080593A4\n" + "\tldr r2, [r0]\n" + "\tadds r0, r6, 0\n" + "\tadds r1, r7, 0\n" + "\tbl sub_80522F4\n" + "\tmovs r0, 0\n" + "\tb _0805940A\n" + "\t.align 2, 0\n" +"_080593A4: .4byte gUnknown_80FE3BC\n" +"_080593A8:\n" + "\tmovs r2, 0x8D\n" + "\tlsls r2, 1\n" + "\tadds r0, r1, r2\n" + "\tldrh r0, [r0]\n" + "\tmov r12, r0\n" +"_080593B2:\n" + "\tmov r0, r12\n" + "\tcmp r0, 0\n" + "\tbne _080593CC\n" + "\tldr r0, _080593C8\n" + "\tldr r2, [r0]\n" + "\tadds r0, r6, 0\n" + "\tadds r1, r7, 0\n" + "\tbl sub_80522F4\n" + "\tb _08059408\n" + "\t.align 2, 0\n" +"_080593C8: .4byte gUnknown_80FE3BC\n" +"_080593CC:\n" + "\tadds r0, r5, 0\n" + "\tmov r1, r12\n" + "\tbl InitPokemonMove\n" + "\tldr r0, _0805941C\n" + "\tadds r1, r5, 0\n" + "\tmovs r2, 0\n" + "\tbl sub_80928C0\n" + "\tldrb r1, [r5, 0x1]\n" + "\tmovs r0, 0x4\n" + "\torrs r0, r1\n" + "\tmovs r1, 0x20\n" + "\torrs r0, r1\n" + "\tstrb r0, [r5, 0x1]\n" + "\tldr r0, _08059420\n" + "\tldr r2, [r0]\n" + "\tadds r0, r6, 0\n" + "\tadds r1, r7, 0\n" + "\tbl sub_80522F4\n" + "\tldr r1, [sp]\n" + "\tadds r1, 0xFB\n" + "\tldrb r0, [r1]\n" + "\tcmp r0, 0\n" + "\tbne _08059404\n" + "\tmovs r0, 0x1\n" + "\tstrb r0, [r1]\n" +"_08059404:\n" + "\tmovs r1, 0x1\n" + "\tmov r10, r1\n" +"_08059408:\n" + "\tmov r0, r10\n" +"_0805940A:\n" + "\tadd sp, 0x4\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1\n" + "\t.align 2, 0\n" +"_0805941C: .4byte gUnknown_202DE58\n" +"_08059420: .4byte gUnknown_80FE38C\n" + ); +} +#endif From b54bb0bdc7c3118aca279d3a86f7200bcc8b71a6 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 4 Mar 2024 08:33:14 -0800 Subject: [PATCH 11/14] combine move action files --- ld_script.txt | 3 +- src/code_805A120.c | 1466 ------------------------ src/{code_8057824.c => move_actions.c} | 1446 ++++++++++++++++++++++- 3 files changed, 1446 insertions(+), 1469 deletions(-) delete mode 100644 src/code_805A120.c rename src/{code_8057824.c => move_actions.c} (55%) diff --git a/ld_script.txt b/ld_script.txt index b8dfdea37..0c099b76d 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -225,8 +225,7 @@ SECTIONS { asm/code_80521D0.o(.text); src/charge_move.o(.text); src/move_util.o(.text); - src/code_8057824.o(.text); - src/code_805A120.o(.text); + src/move_actions.o(.text); src/status_actions.o(.text); src/move_checks.o(.text); asm/code_805D8C8.o(.text); diff --git a/src/code_805A120.c b/src/code_805A120.c deleted file mode 100644 index 51cd4adf0..000000000 --- a/src/code_805A120.c +++ /dev/null @@ -1,1466 +0,0 @@ -#include "global.h" -#include "code_806CD90.h" -#include "constants/ability.h" -#include "constants/move_id.h" -#include "constants/status.h" -#include "constants/targeting.h" -#include "constants/type.h" -#include "constants/weather.h" -#include "structs/dungeon_entity.h" -#include "structs/str_dungeon.h" -#include "dungeon_ai_targeting.h" -#include "dungeon_pokemon_attributes.h" -#include "dungeon_items.h" -#include "dungeon_map_access.h" -#include "dungeon_movement.h" -#include "dungeon_random.h" -#include "dungeon_util.h" -#include "items.h" -#include "moves.h" -#include "move_effects_target.h" -#include "move_util.h" -#include "number_util.h" -#include "status.h" -#include "status_actions.h" -#include "tile_types.h" -#include "code_8077274_1.h" -#include "code_808417C.h" -#include "charge_move.h" -#include "weather.h" - -extern u32 gUnknown_202F210; -extern u8 gAvailablePokemonNames[]; -extern u8 gUnknown_202DE58[]; -extern u8 gUnknown_202F218; -extern u32 gUnknown_202F214; - -extern s16 gUnknown_80F4DE0; -extern s16 gUnknown_80F4DC4; -extern u8 *gUnknown_80FCF78[]; -extern s16 gUnknown_80F4DF0; -extern u32 gUnknown_80F4F5C; -extern u8 *gUnknown_80FACFC[]; -extern s16 gUnknown_80F4F7C; -extern s32 gSolarBeamMovePower; -extern u8 *gUnknown_80FACE4[]; -extern u8 *gUnknown_80FEB8C[]; -extern u32 gUnknown_8106A4C; -extern u32 gUnknown_8106A50; -extern s16 gUnknown_80F4DC8; -extern s16 gUnknown_80F4DEC; -extern s16 gUnknown_80F4E00; -extern u8 *gUnknown_80FD128[]; -extern u8 *gUnknown_80FAD2C[]; -extern u32 gUnknown_80F4F64; -extern u8 gSecretPowerTable[]; -extern s16 gUnknown_80F4E74; -extern s16 gUnknown_80F4E06; -extern s16 gUnknown_80F4E94[]; -extern u8 *gUnknown_80FC74C[]; -extern u8 *gUnknown_80FC790[]; -extern u8 *gUnknown_80FC7AC[]; -extern u8 *gUnknown_80FD578[]; -extern u8 *gUnknown_80FCCE4[]; -extern u8 *gUnknown_80FC81C[]; -extern u8 *gUnknown_80FC854[]; -extern u8 *gUnknown_80FCF7C[]; -extern u8 *gUnknown_80FC730[]; -extern u16 gUnknown_80F4F42; -extern s16 gUnknown_80F4DF2; -extern u8 *gUnknown_80FC770[]; -extern s32 gUnknown_80F51D4[]; -extern s16 gUnknown_80F4DD2; -extern u8 *gUnknown_80FCA3C[]; -extern u8 *gUnknown_80FD170[]; -extern u8 *gUnknown_80FCCE8[]; -extern u8 *gUnknown_80FD18C[]; -extern u8 *gUnknown_80FD57C[]; -extern s16 gUnknown_80F4F82; -extern u8 *gUnknown_80FEBDC[]; -extern u8 *gUnknown_80FC5CC[]; -extern s16 gUnknown_80F4DFA; -extern s16 gUnknown_80F4EE0; -extern u8 *gUnknown_81004EC[]; -extern s16 gUnknown_80F4DDA; -extern s16 gUnknown_80F4DFE; -extern u8 *gUnknown_81004EC[]; -extern s16 gUnknown_80F4DFC; -extern u8 *gUnknown_80FC7C8[]; -extern u32 gUnknown_80F4F60; -extern u8 *gUnknown_80FAD10[]; -extern s16 gUnknown_80F4DCC; -extern s16 gUnknown_80F4DBE; -extern s16 gUnknown_80F4DCA; -extern s16 gUnknown_80F4DE2; -extern u8 *gUnknown_80FEB90[]; -extern s16 gUnknown_80F501A[]; - -extern u32 sub_8055864(Entity *pokemon, Entity *target, Move *param_3, s32 param_4, s32 param_5); -extern void sub_80943A0(void*, s32); -extern s16 sub_8057600(Move*, u32); -extern u8 sub_8044B28(void); -extern u8 sub_803F428(Position *pos); -extern void IncreaseEntityPixelPos(Entity *, u32, u32); -extern void sub_803E46C(u32); -extern void sub_807EC28(bool8); -extern void sub_806F370(Entity *r0, Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32); -void sub_8075900(Entity *pokemon, u8 r1); -extern void sub_804535C(Entity *, u32); -extern void sub_804AC20(Position *); -extern void sub_806A5B8(Entity *entity); -extern void sub_80694C0(Entity *, s32, s32, u32); -extern void sub_807D148(Entity *pokemon, Entity *target, u32 r2, Position *r3); -extern void SetMessageArgument(u8 *buffer, Entity *r1, u32); -extern void SetMessageArgument_2(u8 *buffer, EntityInfo *r1, u32); -void sub_80522F4(Entity *r0, Entity *r1, char r2[]); -extern void sub_806A6E8(Entity *); -extern u32 sub_8055640(Entity *, Entity *, Move *, u32, u32); -extern void sub_807EA30(u32); -extern void sub_806ABAC(Entity *, Entity *); -extern u8 sub_807EAA0(u32, u32); -extern void sub_8045C28(Item *, u8 , u8); -extern void sub_805A7D4(Entity *, Entity *, Item *, Position *); -extern void SetEntityPixelPos(Entity *, s32, s32); -extern void sub_804652C(Entity *, Entity *, Item *, u32, Position *); -extern void sub_806EAF4(Entity *, Entity *, u8, u32, u32, s32 *, u32, u16, u32); -extern u8 *gUnknown_80FEB60[]; -extern u8 *gUnknown_80FE330[]; -extern u8 *gUnknown_80FE36C[]; -extern u8 *gPtrForecastPreventsTypeSwitchMessage[]; - -extern u8 sub_806F4A4(Entity *, u32); -extern void sub_807DF38(Entity *pokemon, Entity *target, Position *pos, u32, u8 moveType, s16); - - -bool8 sub_8059424(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { - flag = TRUE; - if(sub_805727C(pokemon, target, gUnknown_80F4DF0)) - { - CringeStatusTarget(pokemon, target, FALSE); - } - } - return flag; -} - -bool8 sub_805946C(Entity * pokemon,Entity * target,Move * move,u32 param_4) -{ - s32 HP; - bool8 flag; - - flag = FALSE; - if (sub_8055640(pokemon, target, move, 0x100, param_4) != 0) { - flag = TRUE; - if ((!HasAbility(pokemon, ABILITY_ROCK_HEAD)) && (sub_8057308(pokemon,0) != 0)) { - HP = pokemon->info->maxHPStat; - if (HP < 0) { - HP = HP + 7; - } - HP = HP >> 3; - if (HP == 0) { - HP = 1; - } - sub_806F370(pokemon,pokemon,HP,0,0,0,0x1fd,0x14,1,0); - } - } - return flag; -} - -bool8 sub_80594E0(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - gDungeon->unkE269 = gUnknown_80F4F42; - if(sub_807EAA0(1, 0) == 0) - { - sub_80522F4(pokemon, target, *gUnknown_80FCF78); - } - return TRUE; -} - -bool8 sub_8059528(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - LowerAccuracyStageTarget(pokemon, target, gUnknown_8106A4C, TRUE); - return TRUE; -} - -bool8 sub_8059540(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { - flag = TRUE; - if(sub_805727C(pokemon, target, gUnknown_80F4DC4)) - { - PoisonedStatusTarget(pokemon, target, FALSE); - } - } - return flag; -} - -bool8 sub_8059588(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - RaiseAttackStageTarget(pokemon, target, gUnknown_8106A50, 1); - return TRUE; -} - -bool8 sub_80595A0(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { - flag = TRUE; - if(sub_805727C(pokemon, target, gUnknown_80F4DE0)) - { - BurnedStatusTarget(pokemon, target, 0, FALSE); - } - } - return flag; -} - -bool8 sub_80595EC(Entity * pokemon,Entity * target,Move * move,u32 param_4) -{ - u8 moveType; - u8 local_20; - - local_20 = 0; - if (sub_806F4A4(target,GetMoveType(move)) == 0) { - sub_80522F4(pokemon,target,*gUnknown_80FEB8C); - return FALSE; - } - else { - moveType = GetMoveType(move); - sub_806F370(pokemon,target,9999,1,&local_20,moveType,sub_8057600(move,param_4),0,1,0); - local_20 = (local_20 == 0); - return local_20; - } -} - -bool8 SolarBeamMoveAction(Entity * pokemon,Entity * target,Move * move,u32 param_4) -{ - u8 weather; // weather and flag are reused in same variable - s32 movePower; - - weather = GetApparentWeather(pokemon); - if ((weather == WEATHER_SUNNY) || (MoveMatchesChargingStatus(pokemon,move))) { - movePower = gSolarBeamMovePower; - - if (((weather == WEATHER_SANDSTORM) || (weather == WEATHER_RAIN)) || weather == WEATHER_HAIL) { - movePower /= 2; - } - weather = sub_8055640(pokemon,target,move,movePower,param_4) != 0 ? TRUE : FALSE; - sub_8079764(pokemon); - } - else { - SetChargeStatusTarget(pokemon,pokemon,STATUS_SOLARBEAM,move,*gUnknown_80FACE4); - weather = TRUE; - } - return weather; -} - -bool8 sub_8059714(Entity * pokemon,Entity * target,Move * move,u32 param_4) -{ - u8 local_20; - - local_20 = 0; - sub_806F370(pokemon,target,gUnknown_80F4F7C,1,&local_20,GetMoveType(move),sub_8057600(move,param_4),0,1,0); - local_20 = local_20 == 0; - return local_20; -} - -bool8 FlyMoveAction(Entity * pokemon, Entity * target, Move * move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if (MoveMatchesChargingStatus(pokemon,move)) { - flag = sub_8055640(pokemon,target,move,gUnknown_80F4F5C,param_4) != 0 ? TRUE : FALSE; - sub_8079764(pokemon); - } - else { - SetChargeStatusTarget(pokemon,pokemon,STATUS_FLYING,move,*gUnknown_80FACFC); - flag = TRUE; - } - return flag; -} - -bool8 sub_80597F0(Entity * pokemon,Entity * target,Move * move,u32 param_4) -{ - sub_807DF38(pokemon,target,&target->pos,2,GetMoveType(move),sub_8057600(move,param_4)); - return TRUE; -} - -bool8 DiveMoveAction(Entity * pokemon, Entity * target, Move * move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if (IsTileGround(GetTileAtEntitySafe(pokemon))) { - sub_80522F4(pokemon,target,*gUnknown_80FD128); - } - else if (MoveMatchesChargingStatus(pokemon,move)) { - flag = sub_8055640(pokemon,target,move,gUnknown_80F4F64,param_4) != 0 ? TRUE : FALSE; - sub_8079764(pokemon); - } - else { - SetChargeStatusTarget(pokemon,pokemon,STATUS_DIVING,move,*gUnknown_80FAD2C); - flag = TRUE; - } - return flag; -} - -bool8 sub_80598CC(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { - flag = TRUE; - if(sub_805727C(pokemon, target, gUnknown_80F4E00)) - { - LowerAccuracyStageTarget(pokemon, target, gUnknown_8106A4C, FALSE); - } - } - return flag; -} - -bool8 StockpileMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - HandleStockpile(pokemon, target); - return TRUE; -} - -bool8 sub_8059928(Entity * pokemon,Entity * target,Move * move,u32 param_4) -{ - bool8 flag; - s32 iVar2; - - iVar2 = 1; - flag = FALSE; - if ((u8)(target->info->chargingStatus - 7) <= 1){ - iVar2 = 2; - } - if (sub_8055640(pokemon,target,move,iVar2 << 8,param_4) != 0) - { - flag = TRUE; - if(sub_805727C(pokemon,target,gUnknown_80F4DEC) != 0) { - CringeStatusTarget(pokemon,target,FALSE); - } - } - return flag; -} - -bool8 sub_8059988(Entity * pokemon,Entity * target,Move * move,u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { - flag = TRUE; - gUnknown_202F218 = 1; - } - if (((gUnknown_202F218 != 0) && (gUnknown_202F214 == 2)) && - (sub_805727C(pokemon,target,gUnknown_80F4DC8) != 0)) { - PoisonedStatusTarget(pokemon,target,FALSE); - } - return flag; -} - -bool8 sub_80599EC(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - s32 HP; - - HP = target->info->maxHPStat; - if(HP < 0) - HP += 3; - HealTargetHP(pokemon, target, HP >> 2, 0, TRUE); - return TRUE; -} - -bool8 sub_8059A18(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - RaiseAccuracyStageTarget(pokemon, target, gUnknown_8106A50); - return TRUE; -} - -bool8 sub_8059A2C(Entity * pokemon,Entity * target,Move * move,u32 param_4) -{ - u8 local_20; - u32 level; - - local_20 = 0; - level = pokemon->info->level; - sub_806F370(pokemon,target,level,1,&local_20,GetMoveType(move),sub_8057600(move,param_4),0,1,0); - local_20 = local_20 == 0; - return local_20; -} - -bool8 sub_8059AA8(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - ConfuseStatusTarget(pokemon, target, TRUE); - return TRUE; -} - -bool8 sub_8059AB8(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - TauntStatusTarget(pokemon, target); - return TRUE; -} - -bool8 sub_8059AC4(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - HealTargetHP(pokemon, target, gUnknown_80F501A[GetApparentWeather(pokemon)], 0, TRUE); - return TRUE; -} - -bool8 sub_8059AF8(Entity * pokemon,Entity * target,Move * move,u32 param_4) -{ - u8 local_20; - - local_20 = 0; - if (sub_806F4A4(target,GetMoveType(move)) == 0) { - sub_80522F4(pokemon,target,*gUnknown_80FEB90); - return FALSE; - } - else { - sub_806F370(pokemon,target,9999,1,&local_20,GetMoveType(move),sub_8057600(move,param_4),0,0,0); - local_20 = local_20 == 0; - return local_20; - } -} - -bool8 sub_8059B94(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - RaiseAttackStageTarget(pokemon, target, gUnknown_8106A4C, 2); - return TRUE; -} - -bool8 ConversionMoveAction(Entity * pokemon,Entity * target,Move * move,u32 param_4) -{ - u8 moveType; - Move *movePtr; - s32 index; - EntityInfo * info; - s32 counter; - s32 newIndex; - Move *moveStack [MAX_MON_MOVES]; - - counter = 0; - info = target->info; - if (HasAbility(target, ABILITY_FORECAST)) { - sub_80522F4(pokemon,target,*gPtrForecastPreventsTypeSwitchMessage); - return FALSE; - } - else - { - for(index = 0; index < MAX_MON_MOVES; index++) - { - movePtr = &info->moves[index]; - if (((movePtr->moveFlags & MOVE_FLAG_EXISTS)) && (GetMoveTypeForMonster(target,movePtr) != TYPE_NONE)) { - moveStack[counter] = movePtr; - counter++; - } - } - if (counter == 0) { - sub_80522F4(pokemon,target,*gUnknown_80FE36C); - return FALSE; - } - else - { - newIndex = DungeonRandInt(counter); - moveType = GetMoveTypeForMonster(target,moveStack[newIndex]); - info->types[0] = moveType; - info->types[1] = TYPE_NONE; - info->isColorChanged = TRUE; - sub_80928C0(gUnknown_202DE58, moveStack[newIndex], NULL); - sub_80522F4(pokemon,target,*gUnknown_80FE330); - return TRUE; - } - } -} - -bool8 Conversion2MoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - Conversion2StatusTarget(pokemon, target); - return TRUE; -} - -bool8 HelpingHandMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - bool8 flag; - flag = FALSE; - if(pokemon == target) - { - sub_80522F4(target, target, *gUnknown_80FEB60); - } - else { - RaiseAttackStageTarget(pokemon, target, gUnknown_8106A4C, 1); - RaiseAttackStageTarget(pokemon, target, gUnknown_8106A50, 1); - flag = TRUE; - } - return flag; -} - -bool8 sub_8059CD8(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - RaiseDefenseStageTarget(pokemon, target, gUnknown_8106A4C, 2); - return TRUE; -} - -bool8 sub_8059CF0(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - sub_807D148(pokemon, target, 0, NULL); - return TRUE; -} - -bool8 sub_8059D00(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { - flag = TRUE; - if(sub_805727C(pokemon, target, gUnknown_80F4DE2)) - { - ParalyzeStatusTarget(pokemon, target, FALSE); - } - } - return flag; -} - -bool8 sub_8059D48(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - ParalyzeStatusTarget(pokemon, target, TRUE); - return TRUE; -} - -bool8 sub_8059D58(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { - flag = TRUE; - if(sub_805727C(pokemon, target, 0)) - { - ParalyzeStatusTarget(pokemon, target, FALSE); - } - } - return flag; -} - -bool8 sub_8059D98(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - ImmobilizedStatusTarget(pokemon, target); - return TRUE; -} - -bool8 sub_8059DA4(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - PoisonedStatusTarget(pokemon, target, TRUE); - return TRUE; -} - -bool8 sub_8059DB4(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - BadlyPoisonedStatusTarget(pokemon, target, TRUE); - return TRUE; -} - -bool8 sub_8059DC4(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { - flag = TRUE; - if(sub_805727C(pokemon, target, gUnknown_80F4DCA)) - { - BadlyPoisonedStatusTarget(pokemon, target, FALSE); - } - } - return flag; -} - -bool8 sub_8059E0C(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { - flag = TRUE; - if(sub_805727C(pokemon, target, gUnknown_80F4DBE)) - { - PoisonedStatusTarget(pokemon, target, FALSE); - } - } - return flag; -} - -bool8 sub_8059E54(Entity * pokemon,Entity * target,Move * move,u32 param_4,u8 param_5) -{ - u8 moveType; - u32 movePower; - u32 moveCritChance; - bool8 flag; - s32 local_30 [4]; - u8 auStack_20; - - flag = FALSE; - if (param_5 == 0) { - flag = sub_8055640(pokemon,target,move,0x100,param_4) != 0 ? TRUE : FALSE; - } - if (!flag) { - moveType = GetMoveTypeForMonster(pokemon,move); - movePower = GetMovePower(pokemon,move); - moveCritChance = GetMoveCritChance(move); - sub_806EAF4(pokemon,target,moveType,movePower,moveCritChance,local_30,0x100,move->id,0); - SetMessageArgument_2(gAvailablePokemonNames,pokemon->info,0); - sub_80522F4(pokemon,target,*gUnknown_80FC7C8); - local_30[0] = local_30[0] / 2; - if (local_30[0] == 0) { - local_30[0] = 1; - } - sub_806F370(pokemon,pokemon,local_30[0],0,&auStack_20,0,0x1f7,0x13,1,0); - } - return flag; -} - -bool8 sub_8059F38(Entity * pokemon,Entity * target,Move * move,u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if (MoveMatchesChargingStatus(pokemon, move)) { - if (sub_8055640(pokemon, target, move, gUnknown_80F4F60, param_4) != 0) { - flag = TRUE; - if (sub_805727C(pokemon, target, gUnknown_80F4DCC) != 0) { - ParalyzeStatusTarget(pokemon, target, FALSE); - } - } - sub_8079764(pokemon); - } - else { - SetChargeStatusTarget(pokemon, pokemon, STATUS_BOUNCING, move, *gUnknown_80FAD10); - flag = TRUE; - } - return flag; -} - -bool8 sub_8059FC8(Entity * pokemon,Entity * target,Move * move,u32 param_4,u8 param_5) -{ - u8 moveType; - u32 movePower; - u32 moveCritChance; - bool8 flag; - s32 local_30 [4]; - u8 auStack_20; - - flag = FALSE; - if (param_5 == 0) { - flag = sub_8055640(pokemon,target,move,0x200,param_4) != 0 ? TRUE : FALSE; - } - if (!flag) { - moveType = GetMoveTypeForMonster(pokemon,move); - movePower = GetMovePower(pokemon,move); - moveCritChance = GetMoveCritChance(move); - sub_806EAF4(pokemon,target,moveType,movePower,moveCritChance,local_30,0x200,move->id,0); - SetMessageArgument_2(gAvailablePokemonNames,pokemon->info,0); - sub_80522F4(pokemon,target,*gUnknown_80FC7C8); - local_30[0] = local_30[0] / 2; - if (local_30[0] == 0) { - local_30[0] = 1; - } - sub_806F370(pokemon,pokemon,local_30[0],0,&auStack_20,0,0x1f8,0x13,1,0); - } - return flag; -} - -bool8 TriAttackMoveAction(Entity * pokemon, Entity * target, Move *move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if(sub_8055640(pokemon, target, move, 0x100, param_4)) - { - flag = TRUE; - if(sub_805727C(pokemon, target, gUnknown_80F4DFC)) - { - switch(DungeonRandInt(3)) - { - case 0: - default: - ParalyzeStatusTarget(pokemon, target, FALSE); - break; - case 1: - BurnedStatusTarget(pokemon, target, 0, FALSE); - break; - case 2: - FrozenStatusTarget(pokemon, target, FALSE); - break; - } - } - } - return flag; -} - -bool8 sub_805A120(Entity * pokemon,Entity * target, Move *move, u32 param_4) -{ - EntityInfo *r9; - EntityInfo *r8; - EntityInfo *r7; - EntityInfo *sp; - Item item; - bool32 flag; - Item *item1; - Item *item2; - - flag = FALSE; - r9 = pokemon->info; - r7 = r9; - r8 = target->info; - sp = r8; - - SetMessageArgument(gAvailablePokemonNames,pokemon,0); - SetMessageArgument(gAvailablePokemonNames + 0x50,target,0); - if (HasAbility(target, ABILITY_STICKY_HOLD)) { - sub_80522F4(pokemon,target,*gUnknown_80FCCE4); - return FALSE; - } - else if (HasHeldItem(target, ITEM_ALERT_SPECS)) { - sub_80522F4(pokemon,target,*gUnknown_80FD578); - return FALSE; - } - else - { - item1 = &r9->heldItem; - item2 = &r8->heldItem; - if (!(item1->flags & ITEM_FLAG_EXISTS)) - flag = TRUE; - - if(!(item2->flags & ITEM_FLAG_EXISTS)) - flag = TRUE; - - if (flag) - { - sub_80522F4(pokemon,target,*gUnknown_80FC7AC); - return FALSE; - } - else - { - item = r7->heldItem; - r7->heldItem = sp->heldItem; - sp->heldItem = item; - sub_806A6E8(pokemon); - sub_806A6E8(target); - if (r7->unkFB == 0) { - r7->unkFB = 1; - } - sub_80522F4(pokemon,target,*gUnknown_80FC790); - return TRUE; - } - } -} - -bool8 sub_805A210(Entity * pokemon, Entity * target, Move *move, u32 param_4) -{ - bool8 flag; - - gUnknown_202F210++; - flag = sub_8055640(pokemon, target, move, gUnknown_202F210 << 8, param_4) ? TRUE : FALSE; - return flag; -} - -bool8 sub_805A23C(Entity * pokemon, Entity * target, Move *move, u32 param_4) -{ - if(move->id == MOVE_MUD_SPORT) - { - sub_807EA30(0); - } - else - { - sub_807EA30(1); - } - return TRUE; -} - - -bool8 sub_805A258(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { - flag = TRUE; - if(sub_805727C(pokemon, target, 0)) - { - LowerAccuracyStageTarget(pokemon, target, gUnknown_8106A4C, FALSE); - } - } - return flag; -} - -bool8 sub_805A2A0(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - return sub_805BA50(pokemon, target, move, param_4); -} - -bool8 sub_805A2B0(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - RaiseDefenseStageTarget(pokemon, target, gUnknown_8106A50, 2); - return TRUE; -} - -bool8 sub_805A2C8(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - LowerAttackStageTarget(pokemon, target, gUnknown_8106A4C, 1, 1, TRUE); - return TRUE; -} - -bool8 SurfMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - bool8 flag; - u32 uVar2; - - flag = FALSE; - if (target->info->chargingStatus == STATUS_DIVING) { - uVar2 = 0x200; - } - else - { - uVar2 = 0x100; - } - if(sub_8055640(pokemon,target,move,uVar2,param_4) != 0) - flag = TRUE; - return flag; -} - -bool8 RolePlayMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - EntityInfo * entityInfo; - EntityInfo * targetEntityInfo; - - entityInfo = pokemon->info; - targetEntityInfo = target->info; - if (HasAbility(target, ABILITY_WONDER_GUARD)) { - sub_80522F4(pokemon,target,*gUnknown_80FC854); - return FALSE; - } - else - { - entityInfo->abilities[0] = targetEntityInfo->abilities[0]; - entityInfo->abilities[1] = targetEntityInfo->abilities[1]; - gDungeon->unkC = 1; - if (entityInfo->unkFB == 0) { - entityInfo->unkFB = 1; - } - sub_80522F4(pokemon,target,*gUnknown_80FC81C); - sub_806ABAC(pokemon, pokemon); - return TRUE; - } -} - -bool8 sub_805A394(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - gDungeon->unkE267[1] = gUnknown_80F4F42; - if (sub_807EAA0(1,0) == 0) { - sub_80522F4(pokemon,target,*gUnknown_80FCF7C); - } - return TRUE; -} - -bool8 sub_805A3DC(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - LowerDefenseStageTarget(pokemon, target, gUnknown_8106A4C, 1, 1, TRUE); - return TRUE; -} - -bool8 WishMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - WishStatusTarget(pokemon, target); - return TRUE; -} - -bool8 sub_805A408(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { - flag = TRUE; - if(sub_805727C(pokemon, target, gUnknown_80F4DF2)) - { - CringeStatusTarget(pokemon, target, FALSE); - } - } - return flag; -} - -bool8 sub_805A450(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - sub_80522F4(pokemon,target,*gUnknown_80FC730); - return FALSE; -} - -bool8 sub_805A464(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - bool32 flag; - Item item; - Position pos; - - flag = FALSE; - if (sub_8055640(pokemon, target, move, 0x100, param_4) != 0) { - flag = TRUE; - if (sub_8057308(pokemon, 0) != 0) { - if (!EntityExists(target)) { - pos.x = 0; - pos.y = 0; - sub_8045C28(&item,0x69,2); - sub_805A7D4(pokemon,target,&item,&pos); - } - } - } - return flag; -} - -bool8 sub_805A4C0(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - sub_80522F4(pokemon,target,*gUnknown_80FC74C); - return FALSE; -} - -bool8 sub_805A4D4(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - NappingStatusTarget(pokemon, target, CalculateStatusTurns(target, gUnknown_80F4E94, FALSE)); - return TRUE; -} - -bool8 sub_805A4FC(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - IngrainedStatusTarget(pokemon, target); - return TRUE; -} - -bool8 SwallowMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - u8 *stockpileStage; - - stockpileStage = &target->info->stockpileStage; - if (*stockpileStage != 0) { - HealTargetHP(pokemon,target,gUnknown_80F51D4[*stockpileStage],0,TRUE); - *stockpileStage = 0; - } - else { - sub_80522F4(pokemon,target,*gUnknown_80FC770); - } - return TRUE; -} - -bool8 CurseMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - CurseStatusTarget(pokemon, target); - return TRUE; -} - -bool8 sub_805A568(Entity * pokemon, Entity * target, Move *move, u32 param_4) -{ - bool8 flag; - - flag = sub_8055640(pokemon, target, move, 0x100, param_4) ? TRUE : FALSE; - return flag; -} - -bool8 TickleMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - u32 stat; - bool32 flag; - - flag = FALSE; - if (sub_8055640(pokemon, target, move, 0x100, param_4) != 0) { - flag = TRUE; - if (sub_805727C(pokemon,pokemon,0) != 0) { - stat = gUnknown_8106A4C; - LowerAttackStageTarget(pokemon,pokemon,stat,1,0,FALSE); - LowerDefenseStageTarget(pokemon,pokemon,stat,1,0,FALSE); - } - } - return flag; -} - -bool8 sub_805A5E8(Entity *pokemon, Entity *target, Move *move, u32 stat, u32 param_5) -{ - EntityInfo *entityInfo; - bool32 flag; - - flag = FALSE; - if (sub_8055640(pokemon,target,move,0x100,param_5) != 0) { - flag = TRUE; - if (sub_805727C(pokemon,pokemon,gUnknown_80F4DD2) != 0) { - entityInfo = pokemon->info; - RaiseDefenseStageTarget(pokemon,pokemon,stat,1); - if (entityInfo->unkFB == 0) { - entityInfo->unkFB = 1; - } - } - } - return flag; -} - -bool8 SpitUpMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - u8 *stockpileStage; - - stockpileStage = &pokemon->info->stockpileStage; - if (*stockpileStage != 0) { - sub_8055640(pokemon,target,move,*stockpileStage << 8,param_4); - *stockpileStage = 0; - } - else { - sub_80522F4(pokemon,target,*gUnknown_80FCA3C); - } - return TRUE; -} - -bool8 sub_805A688(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { - flag = TRUE; - if(sub_805727C(pokemon, target, 0)) - { - ConfuseStatusTarget(pokemon, target, FALSE); - } - } - return flag; -} - -bool8 KnockOffMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - EntityInfo *entityInfo; - EntityInfo *targetEntityInfo1; - EntityInfo *targetEntityInfo2; - Item heldItem; - Position pos; - Item *itemPtr; - u32 flag; - u32 itemFlag; - - entityInfo = pokemon->info; - targetEntityInfo1 = target->info; - targetEntityInfo2 = targetEntityInfo1; - SetMessageArgument(gAvailablePokemonNames, pokemon, 0); - SetMessageArgument(gAvailablePokemonNames + 0x50, target, 0); - if (HasAbility(target, ABILITY_STICKY_HOLD)) - { - sub_80522F4(pokemon,target,*gUnknown_80FCCE8); - return FALSE; - } - else if (HasHeldItem(target, ITEM_ALERT_SPECS)) - { - sub_80522F4(pokemon,target,*gUnknown_80FD57C); - return FALSE; - } - else - { - heldItem = targetEntityInfo1->heldItem; - itemFlag = heldItem.flags; - flag = ITEM_FLAG_EXISTS; - flag &= itemFlag; - if (flag == 0) - { - sub_80522F4(pokemon,target,*gUnknown_80FD18C); - return FALSE; - } - else - { - itemPtr = &targetEntityInfo2->heldItem; - itemPtr->id = ITEM_NOTHING; - itemPtr->quantity = 0; - itemPtr->flags = 0; - sub_80522F4(pokemon,target,*gUnknown_80FD170); // $m1's item was swatted down! - pos.x = gAdjacentTileOffsets[entityInfo->action.direction].x; - pos.y = gAdjacentTileOffsets[entityInfo->action.direction].y; - sub_805A7D4(pokemon,target,&heldItem,&pos); - if (sub_80706A4(target, &target->pos) != 0) - { - sub_807D148(pokemon, target, 0, NULL); - } - return TRUE; - } - } -} - -void sub_805A7D4(Entity * pokemon, Entity * target, Item *item, Position *pos) -{ - Entity stackEntity; - - stackEntity.type = ENTITY_ITEM; - stackEntity.unk24 = 0; - stackEntity.isVisible = TRUE; - stackEntity.unk22 = 0; - stackEntity.info = (EntityInfo*) item; - stackEntity.pos.x = target->pos.x + pos->x; - stackEntity.pos.y = target->pos.y + pos->y; - SetEntityPixelPos(&stackEntity,(target->pos.x * 0x18 + 4) * 0x100, - (target->pos.y * 0x18 + 4) * 0x100); - stackEntity.spawnGenID = 0; - SetMessageArgument(gUnknown_202DE58,&stackEntity,0); - sub_804652C(pokemon,&stackEntity,item,1,0); -} - -bool8 sub_805A85C(Entity * pokemon, Entity * target, Move *move, u32 param_4) -{ - int x; - int y; - int counter; - Position *r9; - Position pos1; - Move stackMove; - Position32 pos2; - struct Tile *tile; - Entity *entity; - s32 temp; - s32 temp2; - u8 check; - - - pos1 = target->pos; - sub_806CDD4(target,10,8); - - for(counter = 0; counter < 0x28; counter++) - { - x = DungeonRandInt(3); - y = DungeonRandInt(3); - x--; - y--; - if ((x != 0) || (y != 0)) { - pos1.x = target->pos.x + x; - pos1.y = target->pos.y + y; - if (sub_80705F0(target,&pos1) == 0) goto _0805A8C2; - } - } -_0805A8C2: - if (counter == 0x28) { - sub_80522F4(pokemon,target,*gUnknown_80FEBDC); - return FALSE; - } - temp = pos1.x * 0x1800; - temp += (0xC00); - pos2.x = (temp - target->pixelPos.x) / 0xc; - - temp2 = pos1.y * 0x1800; - temp2 += (0x80 << 5); - pos2.y = ((temp2 - target->pixelPos.y) / 0xc); - - - if (((check = sub_803F428(&target->pos), r9 = &target->pos, check != 0)) || (sub_803F428(&pos1) != 0)) { - for(counter = 0; counter < 0xC; counter++) - { - IncreaseEntityPixelPos(target,pos2.x,pos2.y); - sub_803E46C(0x2c); - } - } - tile = GetTileSafe(pos1.x,pos1.y); - entity = tile->monster; - if (entity != NULL) { - if (GetEntityType(entity) == ENTITY_MONSTER) { - InitPokemonMove(&stackMove,MOVE_REGULAR_ATTACK); - if (sub_80571F0(entity,&stackMove) == 0) { - sub_806F370(pokemon,entity,gUnknown_80F4F82,0,0,TYPE_NONE,sub_8057600(move, param_4),0,1,0); - } - if ((sub_8044B28() == 0) && (EntityExists(pokemon))) { - sub_806F370(pokemon,pokemon,gUnknown_80F4F82,0,0,0,0x1fe,0,0,0); - if ((sub_8044B28() == 0) && (EntityExists(pokemon))) goto _0805A9FE; - } - } - else { -_0805A9FE: - if (EntityExists(target)) { - if ((sub_803F428(r9) != 0) || (sub_803F428(&pos1) != 0)) { - for(counter = 0; counter < 0xC; counter++) - { - IncreaseEntityPixelPos(target, -pos2.x,-pos2.y); - sub_803E46C(0x2c); - } - } - goto _0805AA5E; - } - } - } - else - { - sub_80694C0(target,pos1.x,pos1.y,0); -_0805AA5E: - if (EntityExists(target)) { -#ifndef NOMATCHING - register Position *pos asm("r1"); -#else - Position *pos; -#endif - sub_804535C(target, 0); - pos = r9; - if (sub_80706A4(target, pos)) { - sub_807D148(pokemon,target,0,0); - } - if (target->info->isTeamLeader) { - sub_804AC20(r9); - sub_807EC28(FALSE); - } - sub_806A5B8(target); - sub_8075900(target,gDungeon->unk3A08); - } - } - return TRUE; -} - -bool8 sub_805AAD0(Entity * pokemon, Entity * target, Move *move, u32 param_4) -{ - FixedDamageStatusTarget(pokemon, pokemon); - return TRUE; -} - -bool8 BellyDrumMoveAction(Entity * pokemon,Entity * target, Move *move, u32 param_4) -{ - u32 *belly; - u32 newBelly; - EntityInfo *info; - bool8 flag; - - info = pokemon->info; - flag = FALSE; - belly = &info->belly; - if (RoundUpFixedPoint(*belly) > 1) { - RaiseAttackStageTarget(pokemon,target,gUnknown_8106A4C,99); - sub_80943A0(&newBelly,1); - *belly = newBelly; - flag = TRUE; - } - else { - SetMessageArgument(gAvailablePokemonNames,pokemon,0); - sub_80522F4(pokemon,target,*gUnknown_80FC5CC); - } - return flag; -} - -bool8 LightScreenMoveAction(Entity * pokemon, Entity * target, Move *move, u32 param_4) -{ - LightScreenStatusTarget(pokemon, target); - return TRUE; -} - -bool8 SecretPowerMoveAction(Entity * pokemon, Entity * target, Move *move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if ( sub_8055640(pokemon, target, move, 0x100, param_4) != 0) { - flag = TRUE; - if (sub_805727C(pokemon,target,gUnknown_80F4E06) != 0) { - switch(gSecretPowerTable[gDungeon->tileset]) { - case 0: - PoisonedStatusTarget(pokemon,target,FALSE); - break; - case 1: - sub_8075C58(pokemon,target,CalculateStatusTurns(target,&gUnknown_80F4E74,TRUE),FALSE); - break; - case 2: - LowerMovementSpeedTarget(pokemon,target,1,FALSE); - break; - case 3: - LowerAttackStageTarget(pokemon,target,gUnknown_8106A4C,1,1,FALSE); - break; - case 4: - LowerDefenseStageTarget(pokemon,target,gUnknown_8106A4C,1,1,FALSE); - break; - case 5: - LowerAccuracyStageTarget(pokemon,target,gUnknown_8106A4C,FALSE); - break; - case 6: - ConfuseStatusTarget(pokemon,target,FALSE); - break; - case 7: - CringeStatusTarget(pokemon,target,FALSE); - break; - case 8: - default: - ParalyzeStatusTarget(pokemon,target,FALSE); - break; - } - } - } - return flag; -} - -bool8 sub_805AC90(Entity * pokemon, Entity * target, Move *move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if ( sub_8055640(pokemon, target, move, 0x100, param_4) != 0) { - flag = TRUE; - if (sub_805727C(pokemon,target,gUnknown_80F4DFA) != 0) { - ConfuseStatusTarget(pokemon, target, FALSE); - } - } - return flag; -} - -bool8 BulkUpMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - s32 stat = gUnknown_8106A4C; - RaiseAttackStageTarget(pokemon, target, stat, 1); - RaiseDefenseStageTarget(pokemon, target, stat, 1); - return TRUE; -} - -bool8 sub_805AD04(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - PausedStatusTarget(pokemon, target, 1, CalculateStatusTurns(target, &gUnknown_80F4EE0, TRUE), TRUE); - return TRUE; -} - -bool8 sub_805AD34(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - LowerAttackStageTarget(pokemon, target, gUnknown_8106A4C, 2, 1, TRUE); - return TRUE; -} - -static inline bool8 sub_805AD54_sub(Entity *entity) -{ - if ((entity->info->joinedAt == 0x4A) || (entity->info->joinedAt == 0x47)) { - return TRUE; - } - else { - return FALSE; - } -} - -bool8 sub_805AD54(Entity * pokemon, Entity * target, Move *move, u32 param_4) -{ - s32 numPossibleTargets; - EntityInfo *info; - Entity *targetEntity; -#ifndef NONMATCHING - register s32 index asm("r6"); -#else - s32 index; -#endif - Entity **possibleTargets; - bool8 flag; - - flag = FALSE; - info = pokemon->info; - if (pokemon->info->isNotTeamMember) { - possibleTargets = gDungeon->wildPokemon; - numPossibleTargets = DUNGEON_MAX_WILD_POKEMON; - } - else { - possibleTargets = gDungeon->teamPokemon; - numPossibleTargets = MAX_TEAM_MEMBERS; - } - for ( index = 0; index < numPossibleTargets; index++) { - targetEntity = possibleTargets[index]; - if ((((EntityExists(targetEntity)) && (pokemon != targetEntity)) && - (CanTarget(pokemon,targetEntity,FALSE,FALSE) == TARGET_CAPABILITY_CANNOT_ATTACK)) && - (targetEntity->info->clientType != CLIENT_TYPE_CLIENT)) { - if (!sub_805AD54_sub(targetEntity)) { - sub_807D148(pokemon,targetEntity,2,&target->pos); - flag = TRUE; - if (info->unkFB == 0) { - info->unkFB = 1; - } - } - } - } - if (!flag) { - sub_80522F4(pokemon,target,*gUnknown_81004EC); - } - return flag; -} - -bool8 sub_805AE3C(Entity *pokemon, Entity *target, Move *move, u32 param_4) -{ - bool8 flag; - - SendThawedMessage(pokemon, target); - flag = sub_8055640(pokemon,target,move,0x80 << 2,param_4) != 0 ? TRUE : FALSE; - return flag; -} - -bool8 sub_805AE74(Entity * pokemon, Entity * target, Move *move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - if ( sub_8055640(pokemon, target, move, 0x100, param_4) != 0) { - flag = TRUE; - if (sub_805727C(pokemon,target,gUnknown_80F4DDA) != 0) { - LowerDefenseStageTarget(pokemon, target, gUnknown_8106A4C, 1, 1, FALSE); - } - } - return flag; -} - -bool8 sub_805AECC(Entity * pokemon, Entity * target, Move *move, u32 param_4) -{ - bool8 flag; - - flag = FALSE; - SendThawedMessage(pokemon, target); - if ( sub_8055640(pokemon, target, move, 0x100, param_4) != 0) { - flag = TRUE; - if (sub_805727C(pokemon,target,gUnknown_80F4DFE) != 0) { - BurnedStatusTarget(pokemon, target, 0, FALSE); - } - } - return flag; -} - -bool8 PresentMoveAction(Entity * pokemon, Entity * target, Move *move, u32 param_4) -{ - s32 rand1; - s32 rand2; - s32 HP; - bool8 flag; -#ifndef NONMATCHING - register Move *move_r6 asm("r6"); - register u32 param_4_r4 asm("r4"); -#else - Move *move_r6; - u32 param_4_r4; -#endif - - move_r6 = move; - param_4_r4 = param_4; - - rand1 = DungeonRandInt(100); - rand2 = rand1; - if (rand1 < 10) { - flag = sub_8055864(pokemon,target,move_r6,0x78,param_4_r4) != 0 ? TRUE : FALSE; - return flag; - } - else { - if (rand1 < 0x1e) { - HP = target->info->maxHPStat; - if (HP < 0) { - HP = HP + 3; - } - HealTargetHP(pokemon,target,HP >> 2,0,TRUE); - return TRUE; - } - if (rand2 > 0x3B) { - flag = sub_8055864(pokemon,target,move_r6,0x28,param_4_r4) != 0 ? TRUE : FALSE; - return flag; - } - else { - flag = sub_8055864(pokemon,target,move_r6,0x50,param_4_r4) != 0 ? TRUE : FALSE; - return flag; - } - } -} diff --git a/src/code_8057824.c b/src/move_actions.c similarity index 55% rename from src/code_8057824.c rename to src/move_actions.c index 19e8e9cc7..b6e2b6ba8 100644 --- a/src/code_8057824.c +++ b/src/move_actions.c @@ -1,20 +1,30 @@ #include "global.h" #include "constants/ability.h" #include "constants/status.h" +#include "constants/targeting.h" +#include "constants/type.h" #include "constants/weather.h" #include "charge_move.h" +#include "number_util.h" #include "structs/str_dungeon.h" #include "structs/dungeon_entity.h" +#include "dungeon_ai_targeting.h" +#include "dungeon_items.h" +#include "dungeon_map_access.h" +#include "dungeon_movement.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_random.h" #include "dungeon_util.h" +#include "code_806CD90.h" #include "code_8077274_1.h" #include "code_808417C.h" #include "structs/map.h" #include "moves.h" #include "move_effects_target.h" +// #include "move_util.h" #include "pokemon.h" #include "status.h" +#include "status_actions.h" #include "status_checks_1.h" #include "tile_types.h" #include "weather.h" @@ -116,13 +126,18 @@ void sub_8079E34(Entity * pokemon, Entity * target, bool8 param_3); extern u8 sub_807EAA0(u32, u32); extern void sub_80522F4(Entity *r1, Entity *r2, const char[]); extern s32 sub_80556BC(Entity *, Entity *, u8, Move *, u32, u32); + + +// move_util.h extern bool8 sub_805727C(Entity *, Entity *, s16); +bool8 sub_8057308(Entity *pokemon, s32 chance); +bool8 sub_80571F0(Entity * pokemon, Move *move); + extern void sub_806F370(Entity *r0, Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32); extern void SetMessageArgument(char[], Entity*, u32); extern u32 sub_8055640(Entity *, Entity *, Move *, u32, u32); u8 sub_8057620(u32 param_1); extern s16 sub_8094828(u16, u8); -extern bool8 sub_8057308(Entity *, u32); extern void sub_806F324(Entity *, s32, u32, u32); extern s16 gUnknown_80F4DB4; @@ -1893,3 +1908,1432 @@ bool32 SketchMoveAction(struct Entity *pokemon, struct Entity *target, struct Mo ); } #endif + +extern s16 gUnknown_80F4DF0; +extern s16 gUnknown_80F4DE0; +extern s16 gUnknown_80F4DC4; +extern u8 *gUnknown_80FCF78[]; +extern s16 gUnknown_80F4DF0; +extern u32 gUnknown_80F4F5C; +extern u8 *gUnknown_80FACFC[]; +extern s16 gUnknown_80F4F7C; +extern s32 gSolarBeamMovePower; +extern u8 *gUnknown_80FACE4[]; +extern u8 *gUnknown_80FEB8C[]; +extern u32 gUnknown_8106A4C; +extern u32 gUnknown_8106A50; +extern s16 gUnknown_80F4DC8; +extern s16 gUnknown_80F4DEC; +extern s16 gUnknown_80F4E00; +extern u8 *gUnknown_80FD128[]; +extern u8 *gUnknown_80FAD2C[]; +extern u32 gUnknown_80F4F64; +extern u8 gSecretPowerTable[]; +extern s16 gUnknown_80F4E06; +extern s16 gUnknown_80F4E94[]; +extern u8 *gUnknown_80FC74C[]; +extern u8 *gUnknown_80FC790[]; +extern u8 *gUnknown_80FC7AC[]; +extern u8 *gUnknown_80FD578[]; +extern u8 *gUnknown_80FCCE4[]; +extern u8 *gUnknown_80FC81C[]; +extern u8 *gUnknown_80FC854[]; +extern u8 *gUnknown_80FCF7C[]; +extern u8 *gUnknown_80FC730[]; +extern u16 gUnknown_80F4F42; +extern s16 gUnknown_80F4DF2; +extern u8 *gUnknown_80FC770[]; +extern s32 gUnknown_80F51D4[]; +extern s16 gUnknown_80F4DD2; +extern u8 *gUnknown_80FCA3C[]; +extern u8 *gUnknown_80FD170[]; +extern u8 *gUnknown_80FCCE8[]; +extern u8 *gUnknown_80FD18C[]; +extern u8 *gUnknown_80FD57C[]; +extern s16 gUnknown_80F4F82; +extern u8 *gUnknown_80FEBDC[]; +extern u8 *gUnknown_80FC5CC[]; +extern s16 gUnknown_80F4DFA; +extern s16 gUnknown_80F4EE0; +extern u8 *gUnknown_81004EC[]; +extern s16 gUnknown_80F4DDA; +extern s16 gUnknown_80F4DFE; +extern u8 *gUnknown_81004EC[]; +extern s16 gUnknown_80F4DFC; +extern u8 *gUnknown_80FC7C8[]; +extern u32 gUnknown_80F4F60; +extern u8 *gUnknown_80FAD10[]; +extern s16 gUnknown_80F4DCC; +extern s16 gUnknown_80F4DBE; +extern s16 gUnknown_80F4DCA; +extern s16 gUnknown_80F4DE2; +extern u8 *gUnknown_80FEB90[]; +extern s16 gUnknown_80F501A[]; +extern u8 *gUnknown_80FEB60[]; +extern u8 *gUnknown_80FE330[]; +extern u8 *gUnknown_80FE36C[]; +extern u8 *gPtrForecastPreventsTypeSwitchMessage[]; + + +extern u32 gUnknown_202F210; +extern u8 gUnknown_202DE58[]; +extern u8 gUnknown_202F218; +extern u32 gUnknown_202F214; + +extern void sub_804535C(Entity *, u32); +extern void sub_804AC20(Position *); +extern void sub_806A5B8(Entity *entity); +extern void sub_80694C0(Entity *, s32, s32, u32); +void sub_8075900(Entity *pokemon, u8 r1); +extern void sub_80943A0(void*, s32); +extern u8 sub_8044B28(void); +extern u8 sub_803F428(Position *pos); +extern void IncreaseEntityPixelPos(Entity *, u32, u32); +extern void sub_803E46C(u32); +extern void sub_807EC28(bool8); +extern void sub_806F370(Entity *r0, Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32); +extern void SetEntityPixelPos(Entity *, s32, s32); +extern void sub_804652C(Entity *, Entity *, Item *, u32, Position *); +extern void sub_806EAF4(Entity *, Entity *, u8, u32, u32, s32 *, u32, u16, u32); +extern void sub_8045C28(Item *, u8 , u8); +extern void sub_805A7D4(Entity *, Entity *, Item *, Position *); +extern void sub_807EA30(u32); +extern void sub_807D148(Entity *pokemon, Entity *target, u32 r2, Position *r3); +extern void SetMessageArgument_2(u8 *buffer, EntityInfo *r1, u32); +extern void sub_806EAF4(Entity *, Entity *, u8, u32, u32, s32 *, u32, u16, u32); +extern void sub_806A6E8(Entity *); + + +bool8 sub_8059424(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { + flag = TRUE; + if(sub_805727C(pokemon, target, gUnknown_80F4DF0)) + { + CringeStatusTarget(pokemon, target, FALSE); + } + } + return flag; +} + +bool8 sub_805946C(Entity * pokemon,Entity * target,Move * move,u32 param_4) +{ + s32 HP; + bool8 flag; + + flag = FALSE; + if (sub_8055640(pokemon, target, move, 0x100, param_4) != 0) { + flag = TRUE; + if ((!HasAbility(pokemon, ABILITY_ROCK_HEAD)) && (sub_8057308(pokemon,0) != 0)) { + HP = pokemon->info->maxHPStat; + if (HP < 0) { + HP = HP + 7; + } + HP = HP >> 3; + if (HP == 0) { + HP = 1; + } + sub_806F370(pokemon,pokemon,HP,0,0,0,0x1fd,0x14,1,0); + } + } + return flag; +} + + +bool8 sub_80594E0(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + gDungeon->unkE269 = gUnknown_80F4F42; + if(sub_807EAA0(1, 0) == 0) + { + sub_80522F4(pokemon, target, *gUnknown_80FCF78); + } + return TRUE; +} + +bool8 sub_8059528(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + LowerAccuracyStageTarget(pokemon, target, gUnknown_8106A4C, TRUE); + return TRUE; +} + +bool8 sub_8059540(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { + flag = TRUE; + if(sub_805727C(pokemon, target, gUnknown_80F4DC4)) + { + PoisonedStatusTarget(pokemon, target, FALSE); + } + } + return flag; +} + +bool8 sub_8059588(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + RaiseAttackStageTarget(pokemon, target, gUnknown_8106A50, 1); + return TRUE; +} + +bool8 sub_80595A0(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { + flag = TRUE; + if(sub_805727C(pokemon, target, gUnknown_80F4DE0)) + { + BurnedStatusTarget(pokemon, target, 0, FALSE); + } + } + return flag; +} + +bool8 sub_80595EC(Entity * pokemon,Entity * target,Move * move,u32 param_4) +{ + u8 moveType; + u8 local_20; + + local_20 = 0; + if (sub_806F4A4(target,GetMoveType(move)) == 0) { + sub_80522F4(pokemon,target,*gUnknown_80FEB8C); + return FALSE; + } + else { + moveType = GetMoveType(move); + sub_806F370(pokemon,target,9999,1,&local_20,moveType,sub_8057600(move,param_4),0,1,0); + local_20 = (local_20 == 0); + return local_20; + } +} + +bool8 SolarBeamMoveAction(Entity * pokemon,Entity * target,Move * move,u32 param_4) +{ + u8 weather; // weather and flag are reused in same variable + s32 movePower; + + weather = GetApparentWeather(pokemon); + if ((weather == WEATHER_SUNNY) || (MoveMatchesChargingStatus(pokemon,move))) { + movePower = gSolarBeamMovePower; + + if (((weather == WEATHER_SANDSTORM) || (weather == WEATHER_RAIN)) || weather == WEATHER_HAIL) { + movePower /= 2; + } + weather = sub_8055640(pokemon,target,move,movePower,param_4) != 0 ? TRUE : FALSE; + sub_8079764(pokemon); + } + else { + SetChargeStatusTarget(pokemon,pokemon,STATUS_SOLARBEAM,move,*gUnknown_80FACE4); + weather = TRUE; + } + return weather; +} + +bool8 sub_8059714(Entity * pokemon,Entity * target,Move * move,u32 param_4) +{ + u8 local_20; + + local_20 = 0; + sub_806F370(pokemon,target,gUnknown_80F4F7C,1,&local_20,GetMoveType(move),sub_8057600(move,param_4),0,1,0); + local_20 = local_20 == 0; + return local_20; +} + +bool8 FlyMoveAction(Entity * pokemon, Entity * target, Move * move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if (MoveMatchesChargingStatus(pokemon,move)) { + flag = sub_8055640(pokemon,target,move,gUnknown_80F4F5C,param_4) != 0 ? TRUE : FALSE; + sub_8079764(pokemon); + } + else { + SetChargeStatusTarget(pokemon,pokemon,STATUS_FLYING,move,*gUnknown_80FACFC); + flag = TRUE; + } + return flag; +} + +bool8 sub_80597F0(Entity * pokemon,Entity * target,Move * move,u32 param_4) +{ + sub_807DF38(pokemon,target,&target->pos,2,GetMoveType(move),sub_8057600(move,param_4)); + return TRUE; +} + +bool8 DiveMoveAction(Entity * pokemon, Entity * target, Move * move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if (IsTileGround(GetTileAtEntitySafe(pokemon))) { + sub_80522F4(pokemon,target,*gUnknown_80FD128); + } + else if (MoveMatchesChargingStatus(pokemon,move)) { + flag = sub_8055640(pokemon,target,move,gUnknown_80F4F64,param_4) != 0 ? TRUE : FALSE; + sub_8079764(pokemon); + } + else { + SetChargeStatusTarget(pokemon,pokemon,STATUS_DIVING,move,*gUnknown_80FAD2C); + flag = TRUE; + } + return flag; +} + +bool8 sub_80598CC(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { + flag = TRUE; + if(sub_805727C(pokemon, target, gUnknown_80F4E00)) + { + LowerAccuracyStageTarget(pokemon, target, gUnknown_8106A4C, FALSE); + } + } + return flag; +} + +bool8 StockpileMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + HandleStockpile(pokemon, target); + return TRUE; +} + +bool8 sub_8059928(Entity * pokemon,Entity * target,Move * move,u32 param_4) +{ + bool8 flag; + s32 iVar2; + + iVar2 = 1; + flag = FALSE; + if ((u8)(target->info->chargingStatus - 7) <= 1){ + iVar2 = 2; + } + if (sub_8055640(pokemon,target,move,iVar2 << 8,param_4) != 0) + { + flag = TRUE; + if(sub_805727C(pokemon,target,gUnknown_80F4DEC) != 0) { + CringeStatusTarget(pokemon,target,FALSE); + } + } + return flag; +} + +bool8 sub_8059988(Entity * pokemon,Entity * target,Move * move,u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { + flag = TRUE; + gUnknown_202F218 = 1; + } + if (((gUnknown_202F218 != 0) && (gUnknown_202F214 == 2)) && + (sub_805727C(pokemon,target,gUnknown_80F4DC8) != 0)) { + PoisonedStatusTarget(pokemon,target,FALSE); + } + return flag; +} + +bool8 sub_80599EC(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + s32 HP; + + HP = target->info->maxHPStat; + if(HP < 0) + HP += 3; + HealTargetHP(pokemon, target, HP >> 2, 0, TRUE); + return TRUE; +} + +bool8 sub_8059A18(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + RaiseAccuracyStageTarget(pokemon, target, gUnknown_8106A50); + return TRUE; +} + +bool8 sub_8059A2C(Entity * pokemon,Entity * target,Move * move,u32 param_4) +{ + u8 local_20; + u32 level; + + local_20 = 0; + level = pokemon->info->level; + sub_806F370(pokemon,target,level,1,&local_20,GetMoveType(move),sub_8057600(move,param_4),0,1,0); + local_20 = local_20 == 0; + return local_20; +} + +bool8 sub_8059AA8(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + ConfuseStatusTarget(pokemon, target, TRUE); + return TRUE; +} + +bool8 sub_8059AB8(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + TauntStatusTarget(pokemon, target); + return TRUE; +} + +bool8 sub_8059AC4(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + HealTargetHP(pokemon, target, gUnknown_80F501A[GetApparentWeather(pokemon)], 0, TRUE); + return TRUE; +} + +bool8 sub_8059AF8(Entity * pokemon,Entity * target,Move * move,u32 param_4) +{ + u8 local_20; + + local_20 = 0; + if (sub_806F4A4(target,GetMoveType(move)) == 0) { + sub_80522F4(pokemon,target,*gUnknown_80FEB90); + return FALSE; + } + else { + sub_806F370(pokemon,target,9999,1,&local_20,GetMoveType(move),sub_8057600(move,param_4),0,0,0); + local_20 = local_20 == 0; + return local_20; + } +} + +bool8 sub_8059B94(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + RaiseAttackStageTarget(pokemon, target, gUnknown_8106A4C, 2); + return TRUE; +} + +bool8 ConversionMoveAction(Entity * pokemon,Entity * target,Move * move,u32 param_4) +{ + u8 moveType; + Move *movePtr; + s32 index; + EntityInfo * info; + s32 counter; + s32 newIndex; + Move *moveStack [MAX_MON_MOVES]; + + counter = 0; + info = target->info; + if (HasAbility(target, ABILITY_FORECAST)) { + sub_80522F4(pokemon,target,*gPtrForecastPreventsTypeSwitchMessage); + return FALSE; + } + else + { + for(index = 0; index < MAX_MON_MOVES; index++) + { + movePtr = &info->moves[index]; + if (((movePtr->moveFlags & MOVE_FLAG_EXISTS)) && (GetMoveTypeForMonster(target,movePtr) != TYPE_NONE)) { + moveStack[counter] = movePtr; + counter++; + } + } + if (counter == 0) { + sub_80522F4(pokemon,target,*gUnknown_80FE36C); + return FALSE; + } + else + { + newIndex = DungeonRandInt(counter); + moveType = GetMoveTypeForMonster(target,moveStack[newIndex]); + info->types[0] = moveType; + info->types[1] = TYPE_NONE; + info->isColorChanged = TRUE; + sub_80928C0(gUnknown_202DE58, moveStack[newIndex], NULL); + sub_80522F4(pokemon,target,*gUnknown_80FE330); + return TRUE; + } + } +} + +bool8 Conversion2MoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + Conversion2StatusTarget(pokemon, target); + return TRUE; +} + +bool8 HelpingHandMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + bool8 flag; + flag = FALSE; + if(pokemon == target) + { + sub_80522F4(target, target, *gUnknown_80FEB60); + } + else { + RaiseAttackStageTarget(pokemon, target, gUnknown_8106A4C, 1); + RaiseAttackStageTarget(pokemon, target, gUnknown_8106A50, 1); + flag = TRUE; + } + return flag; +} + +bool8 sub_8059CD8(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + RaiseDefenseStageTarget(pokemon, target, gUnknown_8106A4C, 2); + return TRUE; +} + +bool8 sub_8059CF0(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + sub_807D148(pokemon, target, 0, NULL); + return TRUE; +} + +bool8 sub_8059D00(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { + flag = TRUE; + if(sub_805727C(pokemon, target, gUnknown_80F4DE2)) + { + ParalyzeStatusTarget(pokemon, target, FALSE); + } + } + return flag; +} + +bool8 sub_8059D48(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + ParalyzeStatusTarget(pokemon, target, TRUE); + return TRUE; +} + +bool8 sub_8059D58(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { + flag = TRUE; + if(sub_805727C(pokemon, target, 0)) + { + ParalyzeStatusTarget(pokemon, target, FALSE); + } + } + return flag; +} + +bool8 sub_8059D98(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + ImmobilizedStatusTarget(pokemon, target); + return TRUE; +} + +bool8 sub_8059DA4(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + PoisonedStatusTarget(pokemon, target, TRUE); + return TRUE; +} + +bool8 sub_8059DB4(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + BadlyPoisonedStatusTarget(pokemon, target, TRUE); + return TRUE; +} + +bool8 sub_8059DC4(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { + flag = TRUE; + if(sub_805727C(pokemon, target, gUnknown_80F4DCA)) + { + BadlyPoisonedStatusTarget(pokemon, target, FALSE); + } + } + return flag; +} + +bool8 sub_8059E0C(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { + flag = TRUE; + if(sub_805727C(pokemon, target, gUnknown_80F4DBE)) + { + PoisonedStatusTarget(pokemon, target, FALSE); + } + } + return flag; +} + +bool8 sub_8059E54(Entity * pokemon,Entity * target,Move * move,u32 param_4,u8 param_5) +{ + u8 moveType; + u32 movePower; + u32 moveCritChance; + bool8 flag; + s32 local_30 [4]; + u8 auStack_20; + + flag = FALSE; + if (param_5 == 0) { + flag = sub_8055640(pokemon,target,move,0x100,param_4) != 0 ? TRUE : FALSE; + } + if (!flag) { + moveType = GetMoveTypeForMonster(pokemon,move); + movePower = GetMovePower(pokemon,move); + moveCritChance = GetMoveCritChance(move); + sub_806EAF4(pokemon,target,moveType,movePower,moveCritChance,local_30,0x100,move->id,0); + SetMessageArgument_2(gAvailablePokemonNames,pokemon->info,0); + sub_80522F4(pokemon,target,*gUnknown_80FC7C8); + local_30[0] = local_30[0] / 2; + if (local_30[0] == 0) { + local_30[0] = 1; + } + sub_806F370(pokemon,pokemon,local_30[0],0,&auStack_20,0,0x1f7,0x13,1,0); + } + return flag; +} + +bool8 sub_8059F38(Entity * pokemon,Entity * target,Move * move,u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if (MoveMatchesChargingStatus(pokemon, move)) { + if (sub_8055640(pokemon, target, move, gUnknown_80F4F60, param_4) != 0) { + flag = TRUE; + if (sub_805727C(pokemon, target, gUnknown_80F4DCC) != 0) { + ParalyzeStatusTarget(pokemon, target, FALSE); + } + } + sub_8079764(pokemon); + } + else { + SetChargeStatusTarget(pokemon, pokemon, STATUS_BOUNCING, move, *gUnknown_80FAD10); + flag = TRUE; + } + return flag; +} + +bool8 sub_8059FC8(Entity * pokemon,Entity * target,Move * move,u32 param_4,u8 param_5) +{ + u8 moveType; + u32 movePower; + u32 moveCritChance; + bool8 flag; + s32 local_30 [4]; + u8 auStack_20; + + flag = FALSE; + if (param_5 == 0) { + flag = sub_8055640(pokemon,target,move,0x200,param_4) != 0 ? TRUE : FALSE; + } + if (!flag) { + moveType = GetMoveTypeForMonster(pokemon,move); + movePower = GetMovePower(pokemon,move); + moveCritChance = GetMoveCritChance(move); + sub_806EAF4(pokemon,target,moveType,movePower,moveCritChance,local_30,0x200,move->id,0); + SetMessageArgument_2(gAvailablePokemonNames,pokemon->info,0); + sub_80522F4(pokemon,target,*gUnknown_80FC7C8); + local_30[0] = local_30[0] / 2; + if (local_30[0] == 0) { + local_30[0] = 1; + } + sub_806F370(pokemon,pokemon,local_30[0],0,&auStack_20,0,0x1f8,0x13,1,0); + } + return flag; +} + +bool8 TriAttackMoveAction(Entity * pokemon, Entity * target, Move *move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if(sub_8055640(pokemon, target, move, 0x100, param_4)) + { + flag = TRUE; + if(sub_805727C(pokemon, target, gUnknown_80F4DFC)) + { + switch(DungeonRandInt(3)) + { + case 0: + default: + ParalyzeStatusTarget(pokemon, target, FALSE); + break; + case 1: + BurnedStatusTarget(pokemon, target, 0, FALSE); + break; + case 2: + FrozenStatusTarget(pokemon, target, FALSE); + break; + } + } + } + return flag; +} + +bool8 sub_805A120(Entity * pokemon,Entity * target, Move *move, u32 param_4) +{ + EntityInfo *r9; + EntityInfo *r8; + EntityInfo *r7; + EntityInfo *sp; + Item item; + bool32 flag; + Item *item1; + Item *item2; + + flag = FALSE; + r9 = pokemon->info; + r7 = r9; + r8 = target->info; + sp = r8; + + SetMessageArgument(gAvailablePokemonNames,pokemon,0); + SetMessageArgument(gAvailablePokemonNames + 0x50,target,0); + if (HasAbility(target, ABILITY_STICKY_HOLD)) { + sub_80522F4(pokemon,target,*gUnknown_80FCCE4); + return FALSE; + } + else if (HasHeldItem(target, ITEM_ALERT_SPECS)) { + sub_80522F4(pokemon,target,*gUnknown_80FD578); + return FALSE; + } + else + { + item1 = &r9->heldItem; + item2 = &r8->heldItem; + if (!(item1->flags & ITEM_FLAG_EXISTS)) + flag = TRUE; + + if(!(item2->flags & ITEM_FLAG_EXISTS)) + flag = TRUE; + + if (flag) + { + sub_80522F4(pokemon,target,*gUnknown_80FC7AC); + return FALSE; + } + else + { + item = r7->heldItem; + r7->heldItem = sp->heldItem; + sp->heldItem = item; + sub_806A6E8(pokemon); + sub_806A6E8(target); + if (r7->unkFB == 0) { + r7->unkFB = 1; + } + sub_80522F4(pokemon,target,*gUnknown_80FC790); + return TRUE; + } + } +} + +bool8 sub_805A210(Entity * pokemon, Entity * target, Move *move, u32 param_4) +{ + bool8 flag; + + gUnknown_202F210++; + flag = sub_8055640(pokemon, target, move, gUnknown_202F210 << 8, param_4) ? TRUE : FALSE; + return flag; +} + +bool8 sub_805A23C(Entity * pokemon, Entity * target, Move *move, u32 param_4) +{ + if(move->id == MOVE_MUD_SPORT) + { + sub_807EA30(0); + } + else + { + sub_807EA30(1); + } + return TRUE; +} + + +bool8 sub_805A258(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { + flag = TRUE; + if(sub_805727C(pokemon, target, 0)) + { + LowerAccuracyStageTarget(pokemon, target, gUnknown_8106A4C, FALSE); + } + } + return flag; +} + +bool8 sub_805A2A0(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + return sub_805BA50(pokemon, target, move, param_4); +} + +bool8 sub_805A2B0(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + RaiseDefenseStageTarget(pokemon, target, gUnknown_8106A50, 2); + return TRUE; +} + +bool8 sub_805A2C8(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + LowerAttackStageTarget(pokemon, target, gUnknown_8106A4C, 1, 1, TRUE); + return TRUE; +} + +bool8 SurfMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + bool8 flag; + u32 uVar2; + + flag = FALSE; + if (target->info->chargingStatus == STATUS_DIVING) { + uVar2 = 0x200; + } + else + { + uVar2 = 0x100; + } + if(sub_8055640(pokemon,target,move,uVar2,param_4) != 0) + flag = TRUE; + return flag; +} + +bool8 RolePlayMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + EntityInfo * entityInfo; + EntityInfo * targetEntityInfo; + + entityInfo = pokemon->info; + targetEntityInfo = target->info; + if (HasAbility(target, ABILITY_WONDER_GUARD)) { + sub_80522F4(pokemon,target,*gUnknown_80FC854); + return FALSE; + } + else + { + entityInfo->abilities[0] = targetEntityInfo->abilities[0]; + entityInfo->abilities[1] = targetEntityInfo->abilities[1]; + gDungeon->unkC = 1; + if (entityInfo->unkFB == 0) { + entityInfo->unkFB = 1; + } + sub_80522F4(pokemon,target,*gUnknown_80FC81C); + sub_806ABAC(pokemon, pokemon); + return TRUE; + } +} + +bool8 sub_805A394(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + gDungeon->unkE267[1] = gUnknown_80F4F42; + if (sub_807EAA0(1,0) == 0) { + sub_80522F4(pokemon,target,*gUnknown_80FCF7C); + } + return TRUE; +} + +bool8 sub_805A3DC(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + LowerDefenseStageTarget(pokemon, target, gUnknown_8106A4C, 1, 1, TRUE); + return TRUE; +} + +bool8 WishMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + WishStatusTarget(pokemon, target); + return TRUE; +} + +bool8 sub_805A408(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { + flag = TRUE; + if(sub_805727C(pokemon, target, gUnknown_80F4DF2)) + { + CringeStatusTarget(pokemon, target, FALSE); + } + } + return flag; +} + +bool8 sub_805A450(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + sub_80522F4(pokemon,target,*gUnknown_80FC730); + return FALSE; +} + +bool8 sub_805A464(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + bool32 flag; + Item item; + Position pos; + + flag = FALSE; + if (sub_8055640(pokemon, target, move, 0x100, param_4) != 0) { + flag = TRUE; + if (sub_8057308(pokemon, 0) != 0) { + if (!EntityExists(target)) { + pos.x = 0; + pos.y = 0; + sub_8045C28(&item,0x69,2); + sub_805A7D4(pokemon,target,&item,&pos); + } + } + } + return flag; +} + +bool8 sub_805A4C0(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + sub_80522F4(pokemon,target,*gUnknown_80FC74C); + return FALSE; +} + +bool8 sub_805A4D4(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + NappingStatusTarget(pokemon, target, CalculateStatusTurns(target, gUnknown_80F4E94, FALSE)); + return TRUE; +} + +bool8 sub_805A4FC(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + IngrainedStatusTarget(pokemon, target); + return TRUE; +} + +bool8 SwallowMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + u8 *stockpileStage; + + stockpileStage = &target->info->stockpileStage; + if (*stockpileStage != 0) { + HealTargetHP(pokemon,target,gUnknown_80F51D4[*stockpileStage],0,TRUE); + *stockpileStage = 0; + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FC770); + } + return TRUE; +} + +bool8 CurseMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + CurseStatusTarget(pokemon, target); + return TRUE; +} + +bool8 sub_805A568(Entity * pokemon, Entity * target, Move *move, u32 param_4) +{ + bool8 flag; + + flag = sub_8055640(pokemon, target, move, 0x100, param_4) ? TRUE : FALSE; + return flag; +} + +bool8 TickleMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + u32 stat; + bool32 flag; + + flag = FALSE; + if (sub_8055640(pokemon, target, move, 0x100, param_4) != 0) { + flag = TRUE; + if (sub_805727C(pokemon,pokemon,0) != 0) { + stat = gUnknown_8106A4C; + LowerAttackStageTarget(pokemon,pokemon,stat,1,0,FALSE); + LowerDefenseStageTarget(pokemon,pokemon,stat,1,0,FALSE); + } + } + return flag; +} + +bool8 sub_805A5E8(Entity *pokemon, Entity *target, Move *move, u32 stat, u32 param_5) +{ + EntityInfo *entityInfo; + bool32 flag; + + flag = FALSE; + if (sub_8055640(pokemon,target,move,0x100,param_5) != 0) { + flag = TRUE; + if (sub_805727C(pokemon,pokemon,gUnknown_80F4DD2) != 0) { + entityInfo = pokemon->info; + RaiseDefenseStageTarget(pokemon,pokemon,stat,1); + if (entityInfo->unkFB == 0) { + entityInfo->unkFB = 1; + } + } + } + return flag; +} + +bool8 SpitUpMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + u8 *stockpileStage; + + stockpileStage = &pokemon->info->stockpileStage; + if (*stockpileStage != 0) { + sub_8055640(pokemon,target,move,*stockpileStage << 8,param_4); + *stockpileStage = 0; + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FCA3C); + } + return TRUE; +} + +bool8 sub_805A688(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { + flag = TRUE; + if(sub_805727C(pokemon, target, 0)) + { + ConfuseStatusTarget(pokemon, target, FALSE); + } + } + return flag; +} + +bool8 KnockOffMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + EntityInfo *entityInfo; + EntityInfo *targetEntityInfo1; + EntityInfo *targetEntityInfo2; + Item heldItem; + Position pos; + Item *itemPtr; + u32 flag; + u32 itemFlag; + + entityInfo = pokemon->info; + targetEntityInfo1 = target->info; + targetEntityInfo2 = targetEntityInfo1; + SetMessageArgument(gAvailablePokemonNames, pokemon, 0); + SetMessageArgument(gAvailablePokemonNames + 0x50, target, 0); + if (HasAbility(target, ABILITY_STICKY_HOLD)) + { + sub_80522F4(pokemon,target,*gUnknown_80FCCE8); + return FALSE; + } + else if (HasHeldItem(target, ITEM_ALERT_SPECS)) + { + sub_80522F4(pokemon,target,*gUnknown_80FD57C); + return FALSE; + } + else + { + heldItem = targetEntityInfo1->heldItem; + itemFlag = heldItem.flags; + flag = ITEM_FLAG_EXISTS; + flag &= itemFlag; + if (flag == 0) + { + sub_80522F4(pokemon,target,*gUnknown_80FD18C); + return FALSE; + } + else + { + itemPtr = &targetEntityInfo2->heldItem; + itemPtr->id = ITEM_NOTHING; + itemPtr->quantity = 0; + itemPtr->flags = 0; + sub_80522F4(pokemon,target,*gUnknown_80FD170); // $m1's item was swatted down! + pos.x = gAdjacentTileOffsets[entityInfo->action.direction].x; + pos.y = gAdjacentTileOffsets[entityInfo->action.direction].y; + sub_805A7D4(pokemon,target,&heldItem,&pos); + if (sub_80706A4(target, &target->pos) != 0) + { + sub_807D148(pokemon, target, 0, NULL); + } + return TRUE; + } + } +} + +void sub_805A7D4(Entity * pokemon, Entity * target, Item *item, Position *pos) +{ + Entity stackEntity; + + stackEntity.type = ENTITY_ITEM; + stackEntity.unk24 = 0; + stackEntity.isVisible = TRUE; + stackEntity.unk22 = 0; + stackEntity.info = (EntityInfo*) item; + stackEntity.pos.x = target->pos.x + pos->x; + stackEntity.pos.y = target->pos.y + pos->y; + SetEntityPixelPos(&stackEntity,(target->pos.x * 0x18 + 4) * 0x100, + (target->pos.y * 0x18 + 4) * 0x100); + stackEntity.spawnGenID = 0; + SetMessageArgument(gUnknown_202DE58,&stackEntity,0); + sub_804652C(pokemon,&stackEntity,item,1,0); +} + +bool8 sub_805A85C(Entity * pokemon, Entity * target, Move *move, u32 param_4) +{ + int x; + int y; + int counter; + Position *r9; + Position pos1; + Move stackMove; + Position32 pos2; + struct Tile *tile; + Entity *entity; + s32 temp; + s32 temp2; + u8 check; + + + pos1 = target->pos; + sub_806CDD4(target,10,8); + + for(counter = 0; counter < 0x28; counter++) + { + x = DungeonRandInt(3); + y = DungeonRandInt(3); + x--; + y--; + if ((x != 0) || (y != 0)) { + pos1.x = target->pos.x + x; + pos1.y = target->pos.y + y; + if (sub_80705F0(target,&pos1) == 0) goto _0805A8C2; + } + } +_0805A8C2: + if (counter == 0x28) { + sub_80522F4(pokemon,target,*gUnknown_80FEBDC); + return FALSE; + } + temp = pos1.x * 0x1800; + temp += (0xC00); + pos2.x = (temp - target->pixelPos.x) / 0xc; + + temp2 = pos1.y * 0x1800; + temp2 += (0x80 << 5); + pos2.y = ((temp2 - target->pixelPos.y) / 0xc); + + + if (((check = sub_803F428(&target->pos), r9 = &target->pos, check != 0)) || (sub_803F428(&pos1) != 0)) { + for(counter = 0; counter < 0xC; counter++) + { + IncreaseEntityPixelPos(target,pos2.x,pos2.y); + sub_803E46C(0x2c); + } + } + tile = GetTileSafe(pos1.x,pos1.y); + entity = tile->monster; + if (entity != NULL) { + if (GetEntityType(entity) == ENTITY_MONSTER) { + InitPokemonMove(&stackMove,MOVE_REGULAR_ATTACK); + if (sub_80571F0(entity,&stackMove) == 0) { + sub_806F370(pokemon,entity,gUnknown_80F4F82,0,0,TYPE_NONE,sub_8057600(move, param_4),0,1,0); + } + if ((sub_8044B28() == 0) && (EntityExists(pokemon))) { + sub_806F370(pokemon,pokemon,gUnknown_80F4F82,0,0,0,0x1fe,0,0,0); + if ((sub_8044B28() == 0) && (EntityExists(pokemon))) goto _0805A9FE; + } + } + else { +_0805A9FE: + if (EntityExists(target)) { + if ((sub_803F428(r9) != 0) || (sub_803F428(&pos1) != 0)) { + for(counter = 0; counter < 0xC; counter++) + { + IncreaseEntityPixelPos(target, -pos2.x,-pos2.y); + sub_803E46C(0x2c); + } + } + goto _0805AA5E; + } + } + } + else + { + sub_80694C0(target,pos1.x,pos1.y,0); +_0805AA5E: + if (EntityExists(target)) { +#ifndef NOMATCHING + register Position *pos asm("r1"); +#else + Position *pos; +#endif + sub_804535C(target, 0); + pos = r9; + if (sub_80706A4(target, pos)) { + sub_807D148(pokemon,target,0,0); + } + if (target->info->isTeamLeader) { + sub_804AC20(r9); + sub_807EC28(FALSE); + } + sub_806A5B8(target); + sub_8075900(target,gDungeon->unk3A08); + } + } + return TRUE; +} + +bool8 sub_805AAD0(Entity * pokemon, Entity * target, Move *move, u32 param_4) +{ + FixedDamageStatusTarget(pokemon, pokemon); + return TRUE; +} + +bool8 BellyDrumMoveAction(Entity * pokemon,Entity * target, Move *move, u32 param_4) +{ + u32 *belly; + u32 newBelly; + EntityInfo *info; + bool8 flag; + + info = pokemon->info; + flag = FALSE; + belly = &info->belly; + if (RoundUpFixedPoint(*belly) > 1) { + RaiseAttackStageTarget(pokemon,target,gUnknown_8106A4C,99); + sub_80943A0(&newBelly,1); + *belly = newBelly; + flag = TRUE; + } + else { + SetMessageArgument(gAvailablePokemonNames,pokemon,0); + sub_80522F4(pokemon,target,*gUnknown_80FC5CC); + } + return flag; +} + +bool8 LightScreenMoveAction(Entity * pokemon, Entity * target, Move *move, u32 param_4) +{ + LightScreenStatusTarget(pokemon, target); + return TRUE; +} + +bool8 SecretPowerMoveAction(Entity * pokemon, Entity * target, Move *move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if ( sub_8055640(pokemon, target, move, 0x100, param_4) != 0) { + flag = TRUE; + if (sub_805727C(pokemon,target,gUnknown_80F4E06) != 0) { + switch(gSecretPowerTable[gDungeon->tileset]) { + case 0: + PoisonedStatusTarget(pokemon,target,FALSE); + break; + case 1: + sub_8075C58(pokemon,target,CalculateStatusTurns(target,gUnknown_80F4E74,TRUE),FALSE); + break; + case 2: + LowerMovementSpeedTarget(pokemon,target,1,FALSE); + break; + case 3: + LowerAttackStageTarget(pokemon,target,gUnknown_8106A4C,1,1,FALSE); + break; + case 4: + LowerDefenseStageTarget(pokemon,target,gUnknown_8106A4C,1,1,FALSE); + break; + case 5: + LowerAccuracyStageTarget(pokemon,target,gUnknown_8106A4C,FALSE); + break; + case 6: + ConfuseStatusTarget(pokemon,target,FALSE); + break; + case 7: + CringeStatusTarget(pokemon,target,FALSE); + break; + case 8: + default: + ParalyzeStatusTarget(pokemon,target,FALSE); + break; + } + } + } + return flag; +} + +bool8 sub_805AC90(Entity * pokemon, Entity * target, Move *move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if ( sub_8055640(pokemon, target, move, 0x100, param_4) != 0) { + flag = TRUE; + if (sub_805727C(pokemon,target,gUnknown_80F4DFA) != 0) { + ConfuseStatusTarget(pokemon, target, FALSE); + } + } + return flag; +} + +bool8 BulkUpMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + s32 stat = gUnknown_8106A4C; + RaiseAttackStageTarget(pokemon, target, stat, 1); + RaiseDefenseStageTarget(pokemon, target, stat, 1); + return TRUE; +} + +bool8 sub_805AD04(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + PausedStatusTarget(pokemon, target, 1, CalculateStatusTurns(target, &gUnknown_80F4EE0, TRUE), TRUE); + return TRUE; +} + +bool8 sub_805AD34(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + LowerAttackStageTarget(pokemon, target, gUnknown_8106A4C, 2, 1, TRUE); + return TRUE; +} + +static inline bool8 sub_805AD54_sub(Entity *entity) +{ + if ((entity->info->joinedAt == 0x4A) || (entity->info->joinedAt == 0x47)) { + return TRUE; + } + else { + return FALSE; + } +} + +bool8 sub_805AD54(Entity * pokemon, Entity * target, Move *move, u32 param_4) +{ + s32 numPossibleTargets; + EntityInfo *info; + Entity *targetEntity; +#ifndef NONMATCHING + register s32 index asm("r6"); +#else + s32 index; +#endif + Entity **possibleTargets; + bool8 flag; + + flag = FALSE; + info = pokemon->info; + if (pokemon->info->isNotTeamMember) { + possibleTargets = gDungeon->wildPokemon; + numPossibleTargets = DUNGEON_MAX_WILD_POKEMON; + } + else { + possibleTargets = gDungeon->teamPokemon; + numPossibleTargets = MAX_TEAM_MEMBERS; + } + for ( index = 0; index < numPossibleTargets; index++) { + targetEntity = possibleTargets[index]; + if ((((EntityExists(targetEntity)) && (pokemon != targetEntity)) && + (CanTarget(pokemon,targetEntity,FALSE,FALSE) == TARGET_CAPABILITY_CANNOT_ATTACK)) && + (targetEntity->info->clientType != CLIENT_TYPE_CLIENT)) { + if (!sub_805AD54_sub(targetEntity)) { + sub_807D148(pokemon,targetEntity,2,&target->pos); + flag = TRUE; + if (info->unkFB == 0) { + info->unkFB = 1; + } + } + } + } + if (!flag) { + sub_80522F4(pokemon,target,*gUnknown_81004EC); + } + return flag; +} + +bool8 sub_805AE3C(Entity *pokemon, Entity *target, Move *move, u32 param_4) +{ + bool8 flag; + + SendThawedMessage(pokemon, target); + flag = sub_8055640(pokemon,target,move,0x80 << 2,param_4) != 0 ? TRUE : FALSE; + return flag; +} + +bool8 sub_805AE74(Entity * pokemon, Entity * target, Move *move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + if ( sub_8055640(pokemon, target, move, 0x100, param_4) != 0) { + flag = TRUE; + if (sub_805727C(pokemon,target,gUnknown_80F4DDA) != 0) { + LowerDefenseStageTarget(pokemon, target, gUnknown_8106A4C, 1, 1, FALSE); + } + } + return flag; +} + +bool8 sub_805AECC(Entity * pokemon, Entity * target, Move *move, u32 param_4) +{ + bool8 flag; + + flag = FALSE; + SendThawedMessage(pokemon, target); + if ( sub_8055640(pokemon, target, move, 0x100, param_4) != 0) { + flag = TRUE; + if (sub_805727C(pokemon,target,gUnknown_80F4DFE) != 0) { + BurnedStatusTarget(pokemon, target, 0, FALSE); + } + } + return flag; +} + +bool8 PresentMoveAction(Entity * pokemon, Entity * target, Move *move, u32 param_4) +{ + s32 rand1; + s32 rand2; + s32 HP; + bool8 flag; +#ifndef NONMATCHING + register Move *move_r6 asm("r6"); + register u32 param_4_r4 asm("r4"); +#else + Move *move_r6; + u32 param_4_r4; +#endif + + move_r6 = move; + param_4_r4 = param_4; + + rand1 = DungeonRandInt(100); + rand2 = rand1; + if (rand1 < 10) { + flag = sub_8055864(pokemon,target,move_r6,0x78,param_4_r4) != 0 ? TRUE : FALSE; + return flag; + } + else { + if (rand1 < 0x1e) { + HP = target->info->maxHPStat; + if (HP < 0) { + HP = HP + 3; + } + HealTargetHP(pokemon,target,HP >> 2,0,TRUE); + return TRUE; + } + if (rand2 > 0x3B) { + flag = sub_8055864(pokemon,target,move_r6,0x28,param_4_r4) != 0 ? TRUE : FALSE; + return flag; + } + else { + flag = sub_8055864(pokemon,target,move_r6,0x50,param_4_r4) != 0 ? TRUE : FALSE; + return flag; + } + } +} From 6a4d257723c34be689d644e65025fc53b96301ff Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 4 Mar 2024 08:47:53 -0800 Subject: [PATCH 12/14] clean up externs --- src/move_actions.c | 191 ++++++++++++++++++++++----------------------- 1 file changed, 94 insertions(+), 97 deletions(-) diff --git a/src/move_actions.c b/src/move_actions.c index b6e2b6ba8..670e285b7 100644 --- a/src/move_actions.c +++ b/src/move_actions.c @@ -113,9 +113,102 @@ extern s16 gUnknown_80F502A[]; extern s16 gUnknown_80F4E74[]; extern s16 gUnknown_80F4E78[]; extern s16 gUnknown_80F4F28[]; +extern u32 gUnknown_8106A54[]; +extern s16 gUnknown_80F4DF0; +extern s16 gUnknown_80F4DE0; +extern s16 gUnknown_80F4DC4; +extern u8 *gUnknown_80FCF78[]; +extern s16 gUnknown_80F4DF0; +extern u32 gUnknown_80F4F5C; +extern u8 *gUnknown_80FACFC[]; +extern s16 gUnknown_80F4F7C; +extern s32 gSolarBeamMovePower; +extern u8 *gUnknown_80FACE4[]; +extern u8 *gUnknown_80FEB8C[]; +extern u32 gUnknown_8106A4C; +extern u32 gUnknown_8106A50; +extern s16 gUnknown_80F4DC8; +extern s16 gUnknown_80F4DEC; +extern s16 gUnknown_80F4E00; +extern u8 *gUnknown_80FD128[]; +extern u8 *gUnknown_80FAD2C[]; +extern u32 gUnknown_80F4F64; +extern u8 gSecretPowerTable[]; +extern s16 gUnknown_80F4E06; +extern s16 gUnknown_80F4E94[]; +extern u8 *gUnknown_80FC74C[]; +extern u8 *gUnknown_80FC790[]; +extern u8 *gUnknown_80FC7AC[]; +extern u8 *gUnknown_80FD578[]; +extern u8 *gUnknown_80FCCE4[]; +extern u8 *gUnknown_80FC81C[]; +extern u8 *gUnknown_80FC854[]; +extern u8 *gUnknown_80FCF7C[]; +extern u8 *gUnknown_80FC730[]; +extern u16 gUnknown_80F4F42; +extern s16 gUnknown_80F4DF2; +extern u8 *gUnknown_80FC770[]; +extern s32 gUnknown_80F51D4[]; +extern s16 gUnknown_80F4DD2; +extern u8 *gUnknown_80FCA3C[]; +extern u8 *gUnknown_80FD170[]; +extern u8 *gUnknown_80FCCE8[]; +extern u8 *gUnknown_80FD18C[]; +extern u8 *gUnknown_80FD57C[]; +extern s16 gUnknown_80F4F82; +extern u8 *gUnknown_80FEBDC[]; +extern u8 *gUnknown_80FC5CC[]; +extern s16 gUnknown_80F4DFA; +extern s16 gUnknown_80F4EE0; +extern u8 *gUnknown_81004EC[]; +extern s16 gUnknown_80F4DDA; +extern s16 gUnknown_80F4DFE; +extern u8 *gUnknown_81004EC[]; +extern s16 gUnknown_80F4DFC; +extern u8 *gUnknown_80FC7C8[]; +extern u32 gUnknown_80F4F60; +extern u8 *gUnknown_80FAD10[]; +extern s16 gUnknown_80F4DCC; +extern s16 gUnknown_80F4DBE; +extern s16 gUnknown_80F4DCA; +extern s16 gUnknown_80F4DE2; +extern u8 *gUnknown_80FEB90[]; +extern s16 gUnknown_80F501A[]; +extern u8 *gUnknown_80FEB60[]; +extern u8 *gUnknown_80FE330[]; +extern u8 *gUnknown_80FE36C[]; +extern u8 *gPtrForecastPreventsTypeSwitchMessage[]; + + +extern u8 gUnknown_202DE58[]; +extern u32 gUnknown_202F210; +extern u32 gUnknown_202F214; +extern u8 gUnknown_202F218; extern u32 gUnknown_202F21C; extern bool8 gUnknown_202F220; -extern u32 gUnknown_8106A54[]; + +extern void sub_804535C(Entity *, u32); +extern void sub_804AC20(Position *); +extern void sub_806A5B8(Entity *entity); +extern void sub_80694C0(Entity *, s32, s32, u32); +void sub_8075900(Entity *pokemon, u8 r1); +extern void sub_80943A0(void*, s32); +extern u8 sub_8044B28(void); +extern u8 sub_803F428(Position *pos); +extern void IncreaseEntityPixelPos(Entity *, u32, u32); +extern void sub_803E46C(u32); +extern void sub_807EC28(bool8); +extern void sub_806F370(Entity *r0, Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32); +extern void SetEntityPixelPos(Entity *, s32, s32); +extern void sub_804652C(Entity *, Entity *, Item *, u32, Position *); +extern void sub_806EAF4(Entity *, Entity *, u8, u32, u32, s32 *, u32, u16, u32); +extern void sub_8045C28(Item *, u8 , u8); +extern void sub_805A7D4(Entity *, Entity *, Item *, Position *); +extern void sub_807EA30(u32); +extern void sub_807D148(Entity *pokemon, Entity *target, u32 r2, Position *r3); +extern void SetMessageArgument_2(u8 *buffer, EntityInfo *r1, u32); +extern void sub_806EAF4(Entity *, Entity *, u8, u32, u32, s32 *, u32, u16, u32); +extern void sub_806A6E8(Entity *); extern void sub_806ABAC(Entity *, Entity *); extern u8 sub_806F4A4(Entity *, u32); @@ -127,7 +220,6 @@ extern u8 sub_807EAA0(u32, u32); extern void sub_80522F4(Entity *r1, Entity *r2, const char[]); extern s32 sub_80556BC(Entity *, Entity *, u8, Move *, u32, u32); - // move_util.h extern bool8 sub_805727C(Entity *, Entity *, s16); bool8 sub_8057308(Entity *pokemon, s32 chance); @@ -1909,101 +2001,6 @@ bool32 SketchMoveAction(struct Entity *pokemon, struct Entity *target, struct Mo } #endif -extern s16 gUnknown_80F4DF0; -extern s16 gUnknown_80F4DE0; -extern s16 gUnknown_80F4DC4; -extern u8 *gUnknown_80FCF78[]; -extern s16 gUnknown_80F4DF0; -extern u32 gUnknown_80F4F5C; -extern u8 *gUnknown_80FACFC[]; -extern s16 gUnknown_80F4F7C; -extern s32 gSolarBeamMovePower; -extern u8 *gUnknown_80FACE4[]; -extern u8 *gUnknown_80FEB8C[]; -extern u32 gUnknown_8106A4C; -extern u32 gUnknown_8106A50; -extern s16 gUnknown_80F4DC8; -extern s16 gUnknown_80F4DEC; -extern s16 gUnknown_80F4E00; -extern u8 *gUnknown_80FD128[]; -extern u8 *gUnknown_80FAD2C[]; -extern u32 gUnknown_80F4F64; -extern u8 gSecretPowerTable[]; -extern s16 gUnknown_80F4E06; -extern s16 gUnknown_80F4E94[]; -extern u8 *gUnknown_80FC74C[]; -extern u8 *gUnknown_80FC790[]; -extern u8 *gUnknown_80FC7AC[]; -extern u8 *gUnknown_80FD578[]; -extern u8 *gUnknown_80FCCE4[]; -extern u8 *gUnknown_80FC81C[]; -extern u8 *gUnknown_80FC854[]; -extern u8 *gUnknown_80FCF7C[]; -extern u8 *gUnknown_80FC730[]; -extern u16 gUnknown_80F4F42; -extern s16 gUnknown_80F4DF2; -extern u8 *gUnknown_80FC770[]; -extern s32 gUnknown_80F51D4[]; -extern s16 gUnknown_80F4DD2; -extern u8 *gUnknown_80FCA3C[]; -extern u8 *gUnknown_80FD170[]; -extern u8 *gUnknown_80FCCE8[]; -extern u8 *gUnknown_80FD18C[]; -extern u8 *gUnknown_80FD57C[]; -extern s16 gUnknown_80F4F82; -extern u8 *gUnknown_80FEBDC[]; -extern u8 *gUnknown_80FC5CC[]; -extern s16 gUnknown_80F4DFA; -extern s16 gUnknown_80F4EE0; -extern u8 *gUnknown_81004EC[]; -extern s16 gUnknown_80F4DDA; -extern s16 gUnknown_80F4DFE; -extern u8 *gUnknown_81004EC[]; -extern s16 gUnknown_80F4DFC; -extern u8 *gUnknown_80FC7C8[]; -extern u32 gUnknown_80F4F60; -extern u8 *gUnknown_80FAD10[]; -extern s16 gUnknown_80F4DCC; -extern s16 gUnknown_80F4DBE; -extern s16 gUnknown_80F4DCA; -extern s16 gUnknown_80F4DE2; -extern u8 *gUnknown_80FEB90[]; -extern s16 gUnknown_80F501A[]; -extern u8 *gUnknown_80FEB60[]; -extern u8 *gUnknown_80FE330[]; -extern u8 *gUnknown_80FE36C[]; -extern u8 *gPtrForecastPreventsTypeSwitchMessage[]; - - -extern u32 gUnknown_202F210; -extern u8 gUnknown_202DE58[]; -extern u8 gUnknown_202F218; -extern u32 gUnknown_202F214; - -extern void sub_804535C(Entity *, u32); -extern void sub_804AC20(Position *); -extern void sub_806A5B8(Entity *entity); -extern void sub_80694C0(Entity *, s32, s32, u32); -void sub_8075900(Entity *pokemon, u8 r1); -extern void sub_80943A0(void*, s32); -extern u8 sub_8044B28(void); -extern u8 sub_803F428(Position *pos); -extern void IncreaseEntityPixelPos(Entity *, u32, u32); -extern void sub_803E46C(u32); -extern void sub_807EC28(bool8); -extern void sub_806F370(Entity *r0, Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32); -extern void SetEntityPixelPos(Entity *, s32, s32); -extern void sub_804652C(Entity *, Entity *, Item *, u32, Position *); -extern void sub_806EAF4(Entity *, Entity *, u8, u32, u32, s32 *, u32, u16, u32); -extern void sub_8045C28(Item *, u8 , u8); -extern void sub_805A7D4(Entity *, Entity *, Item *, Position *); -extern void sub_807EA30(u32); -extern void sub_807D148(Entity *pokemon, Entity *target, u32 r2, Position *r3); -extern void SetMessageArgument_2(u8 *buffer, EntityInfo *r1, u32); -extern void sub_806EAF4(Entity *, Entity *, u8, u32, u32, s32 *, u32, u16, u32); -extern void sub_806A6E8(Entity *); - - bool8 sub_8059424(Entity *pokemon, Entity *target, Move *move, u32 param_4) { bool8 flag; From e6e032124d94fa1e49a66c6c6db84a67bb7d86ed Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 10 Mar 2024 17:37:59 -0700 Subject: [PATCH 13/14] match remaining data, use defines and document IsNotValidDungeon --- data/data_8107010.s | 28 ++---------------------- include/dungeon.h | 2 +- src/code_80958E8.c | 2 +- src/data/pokemon_3.h | 52 ++++++++++++++++++++++++++++++++++++++++++++ src/dungeon_2_1.c | 10 ++++----- src/pokemon_3.c | 2 +- 6 files changed, 62 insertions(+), 34 deletions(-) diff --git a/data/data_8107010.s b/data/data_8107010.s index de57e169b..a1a85cfd6 100644 --- a/data/data_8107010.s +++ b/data/data_8107010.s @@ -1890,29 +1890,5 @@ gFinalScenarioText: @ 8109CF4 @ 8109D30 #include "dungeon/dungeon_data.inc" -.global gUnknown_810A350 -gUnknown_810A350: @ 810A350 -@ replacing .incbin "baserom.gba", 0x0010a350, 0xb -.byte 0x18, 0x19, 0x1e, 0x27, 0x31, 0x32, 0x33, 0x36, 0x37, 0x3d, 0x3f - -.global gInvalidItemIDs -gInvalidItemIDs: @ 810A35B (item related) -@ replacing .incbin "baserom.gba", 0x0010a35b, 0x10 -.byte 0xed, 0xee, 0xef, 0xb1, 0xe9, 0x24, 0xd8, 0xd2, 0xb0, 0xdc, 0x32, 0x33, 0x34, 0xc2, 0xec, 0xf0 - -.global gTacticsTargetLeader -gTacticsTargetLeader: @ 810A36B -@ replacing .incbin "baserom.gba", 0x0010a36b, 0xd -.byte 0x01 -.byte 0x00 -.byte 0x00 -.byte 0x00 -.byte 0x01 -.byte 0x01 -.byte 0x01 -.byte 0x01 -.byte 0x01 -.byte 0x00 -.byte 0x01 -.byte 0x00 -.byte 0x00 +.align 2,0 + diff --git a/include/dungeon.h b/include/dungeon.h index 6b9177acc..b8d7ca0cc 100644 --- a/include/dungeon.h +++ b/include/dungeon.h @@ -47,6 +47,6 @@ void PrintDungeonLocationtoBuffer(u8 *buffer, DungeonLocation *dungeonLocation); u32 sub_80908D8(DungeonLocation *dungeon); u8 sub_8090910(DungeonLocation *dungeon, u32 param_2); -bool8 sub_809095C(u8 dungeon); +bool8 IsNotValidDungeon(u8 dungeon); #endif // GUARD_DUNGEON_H diff --git a/src/code_80958E8.c b/src/code_80958E8.c index b07f99369..c5ab16bbe 100644 --- a/src/code_80958E8.c +++ b/src/code_80958E8.c @@ -90,7 +90,7 @@ bool8 ValidateWonderMail(WonderMail *data) if(data->unk2 > 9) return FALSE; - if(sub_809095C(data->unk4.dungeon.id)) + if(IsNotValidDungeon(data->unk4.dungeon.id)) return FALSE; if(data->unk4.dungeon.floor >= GetDungeonFloorCount(data->unk4.dungeon.id)) return FALSE; diff --git a/src/data/pokemon_3.h b/src/data/pokemon_3.h index 6bd52d6a2..4bd1c9eff 100644 --- a/src/data/pokemon_3.h +++ b/src/data/pokemon_3.h @@ -1,3 +1,55 @@ +const u8 gInvalidDungeonIDs[11] = +{ + DUNGEON_BOSS_3, + DUNGEON_BOSS_4, + DUNGEON_BOSS_9, + DUNGEON_WONDROUS_SEA, + DUNGEON_AUTOPILOT, + DUNGEON_D50, + DUNGEON_D51, + DUNGEON_D54, + DUNGEON_POISON_MAZE, + DUNGEON_D61, + DUNGEON_OUT_ON_RESCUE +}; + +const u8 gInvalidItemIDs[0x10] = +{ + ITEM_G_MACHINE_6, + ITEM_G_MACHINE_7, + ITEM_G_MACHINE_8, + ITEM_TM_SPIN_SLASH, + ITEM_SWITCH_BOX, + ITEM_ALERT_SPECS, + ITEM_POSSESS_ORB, + ITEM_REVIVER_ORB, + ITEM_TM_EXCAVATE, + ITEM_TOSS_ORB, + ITEM_RING_D, + ITEM_RING_E, + ITEM_RING_F, + ITEM_OBSERVER_ORB, + ITEM_BEATUP_ORB, + NUMBER_OF_ITEM_IDS +}; + +const bool8 gTacticsTargetLeader[NUM_TACTICS] = +{ + [TACTIC_LETS_GO_TOGETHER] = TRUE, + [TACTIC_GO_THE_OTHER_WAY] = FALSE, + [TACTIC_GO_AFTER_FOES] = FALSE, + [TACTIC_AVOID_THE_FIRST_HIT] = FALSE, + [TACTIC_ALL_FOR_ONE] = TRUE, + [TACTIC_GROUP_SAFETY] = TRUE, + [TACTIC_AVOID_TROUBLE] = TRUE, + [TACTIC_BE_PATIENT] = TRUE, + [TACTIC_KEEP_YOUR_DISTANCE] = TRUE, + [TACTIC_WAIT_THERE] = FALSE, + [TACTIC_GET_AWAY] = TRUE, + [TACTIC_UNUSED] = FALSE +}; + + const s16 gReqTacticLvls[NUM_TACTICS] = { [TACTIC_LETS_GO_TOGETHER] = 1, diff --git a/src/dungeon_2_1.c b/src/dungeon_2_1.c index 2854ba394..68e03df1a 100644 --- a/src/dungeon_2_1.c +++ b/src/dungeon_2_1.c @@ -6,7 +6,7 @@ #include "random.h" #include "code_8092334.h" -extern u8 gUnknown_810A350[]; +extern u8 gInvalidDungeonIDs[]; extern u8 gDungeonFloorCount[]; extern u8 *gUnknown_8108084[]; @@ -97,7 +97,7 @@ u8 sub_8090910(DungeonLocation *dungeon, u32 param_2) } } -bool8 sub_809095C(u8 dungeon) +bool8 IsNotValidDungeon(u8 dungeon) { s32 counter; @@ -107,10 +107,10 @@ bool8 sub_809095C(u8 dungeon) else { counter = 0; - if (gUnknown_810A350[0] != DUNGEON_OUT_ON_RESCUE) { - for(; gUnknown_810A350[counter] != DUNGEON_OUT_ON_RESCUE; counter++) + if (gInvalidDungeonIDs[0] != DUNGEON_OUT_ON_RESCUE) { + for(; gInvalidDungeonIDs[counter] != DUNGEON_OUT_ON_RESCUE; counter++) { - if (gUnknown_810A350[counter] == dungeon) return TRUE; + if (gInvalidDungeonIDs[counter] == dungeon) return TRUE; } } return FALSE; diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 1af0c70e8..1746a9323 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/dungeon.h" #include "constants/evolve_type.h" #include "constants/evolution_status.h" #include "constants/iq_skill.h" @@ -17,7 +18,6 @@ extern u8 *gIQSkillNames[]; extern u8 *gIQSkillDescriptions[]; extern u8 *gTacticsDescriptions[]; extern u8 *gTactics[]; -extern bool8 gTacticsTargetLeader[]; extern u32 gIQSkillGroups[]; struct unkStruct_808E9EC From e657587dbde4cb7269e3234cb14f51974e742880 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 11 Mar 2024 08:49:03 -0700 Subject: [PATCH 14/14] address review comments --- src/code_809A560.c | 4 ++-- src/move_actions.c | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/code_809A560.c b/src/code_809A560.c index 23790e1f6..302bf6fa2 100644 --- a/src/code_809A560.c +++ b/src/code_809A560.c @@ -237,7 +237,7 @@ void sub_809A7EC(void) } } -static inline struct unkStruct_3001B64_sub *LOL(s16 p, struct unkStruct_3001B64 **thing) { +static inline struct unkStruct_3001B64_sub *sub_809A83C_inline(s16 p, struct unkStruct_3001B64 **thing) { return &thing[0]->unk43C[p]; } @@ -245,7 +245,7 @@ void sub_809A83C(s16 param_1) { struct unkStruct_3001B64_sub *temp; - temp = LOL(param_1, &gUnknown_3001B64); + temp = sub_809A83C_inline(param_1, &gUnknown_3001B64); temp->unk0 = -1; temp->speciesID = 0; diff --git a/src/move_actions.c b/src/move_actions.c index 670e285b7..70b7ecfaf 100644 --- a/src/move_actions.c +++ b/src/move_actions.c @@ -21,7 +21,6 @@ #include "structs/map.h" #include "moves.h" #include "move_effects_target.h" -// #include "move_util.h" #include "pokemon.h" #include "status.h" #include "status_actions.h"