diff --git a/asm/code_805D8C8.s b/asm/code_805D8C8.s index e6a8aa4e9..df77970ff 100644 --- a/asm/code_805D8C8.s +++ b/asm/code_805D8C8.s @@ -5,1251 +5,6 @@ .text - thumb_func_start sub_805D8C8 -sub_805D8C8: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - ldr r4, _0805D90C - ldr r1, [r4] - ldr r0, _0805D910 - adds r0, r1, r0 - str r0, [sp, 0x10] - movs r2, 0x3 - str r2, [sp, 0xC] - movs r5, 0 - movs r0, 0 - strh r0, [r1, 0x12] - bl GetLeader - movs r1, 0x1 - bl sub_806A2BC - bl GetLeader - bl sub_80701A4 - lsls r0, 24 - cmp r0, 0 - beq _0805D928 - movs r0, 0x3C - movs r1, 0x10 - bl sub_803E708 - bl _0805E2B0 - .align 2, 0 -_0805D90C: .4byte gDungeon -_0805D910: .4byte 0x000181e8 -_0805D914: - mov r1, r8 - adds r1, 0x44 - movs r2, 0 - movs r0, 0x2 - strh r0, [r1] - mov r0, r8 - adds r0, 0x48 - strb r2, [r0] - bl _0805E2B0 -_0805D928: - ldr r0, [r4] - ldr r3, _0805D9D4 - adds r0, r3 - strb r5, [r0] - bl sub_8040A78 - ldr r1, [r4] - ldrb r0, [r1, 0x1] - cmp r0, 0 - beq _0805D976 - strb r5, [r1, 0x1] - bl GetLeader - movs r1, 0x1 - bl ShouldMonsterRunAwayAndShowEffect - lsls r0, 24 - cmp r0, 0 - bne _0805D976 - movs r0, 0x1 - bl sub_8044C10 - bl sub_805E804 - bl GetLeader - bl sub_80647F0 - bl ResetRepeatTimers - bl ResetUnusedInputStruct - bl sub_805F1AC - lsls r0, 16 - cmp r0, 0 - beq _0805D976 - bl _0805E2B0 -_0805D976: - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x1 - bl sub_806A914 -_0805D980: - bl GetLeader - mov r10, r0 - ldr r5, [r0, 0x70] - mov r8, r5 - movs r1, 0x2 - ldrsh r0, [r5, r1] - bl sub_80978C8 - ldr r2, _0805D9D8 - ldr r0, [r2] - ldr r3, _0805D9DC - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _0805D9AE - bl sub_805E874 - lsls r0, 24 - cmp r0, 0 - bne _0805D914 - bl sub_805E804 -_0805D9AE: - ldr r0, _0805D9E0 - movs r1, 0 - strb r1, [r0] - ldr r0, _0805D9E4 - strb r1, [r0] - ldr r5, _0805D9D8 - ldr r0, [r5] - movs r1, 0xB8 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - bge _0805D9CA - b _0805DAE8 -_0805D9CA: - ldr r0, _0805D9E8 - ands r6, r0 - movs r2, 0x1 - orrs r6, r2 - b _0805DAEC - .align 2, 0 -_0805D9D4: .4byte 0x00000673 -_0805D9D8: .4byte gDungeon -_0805D9DC: .4byte 0x0000066c -_0805D9E0: .4byte gUnknown_202F22D -_0805D9E4: .4byte gUnknown_202F22C -_0805D9E8: .4byte 0xffffff00 -_0805D9EC: - movs r0, 0x1 - bl sub_8044C50 - ldr r3, _0805DA00 - ldr r0, [r3] - ldr r5, _0805DA04 - adds r0, r5 - strb r4, [r0] - b _0805E1AE - .align 2, 0 -_0805DA00: .4byte gDungeon -_0805DA04: .4byte 0x00000673 -_0805DA08: - ldr r0, _0805DA14 - ldr r1, [r0] - mov r0, r10 - bl SendMessage - b _0805DBDA - .align 2, 0 -_0805DA14: .4byte gUnknown_80FD4B0 -_0805DA18: - ldr r0, _0805DA1C - b _0805DCBC - .align 2, 0 -_0805DA1C: .4byte gUnknown_80F8A28 -_0805DA20: - ldr r0, [sp, 0x1C] - movs r1, 0x17 - bl SetMonsterActionFields - b _0805E1AE -_0805DA2A: - ldr r0, _0805DA38 - ands r6, r0 - movs r3, 0x1 - orrs r6, r3 - ldr r0, _0805DA3C - ands r6, r0 - b _0805DAD6 - .align 2, 0 -_0805DA38: .4byte 0xffffff00 -_0805DA3C: .4byte 0xffff00ff -_0805DA40: - ldr r5, _0805DA58 - ldr r0, [r5] - movs r2, 0xB8 - lsls r2, 3 - adds r0, r2 - str r1, [r0] - ldr r0, _0805DA5C - ands r6, r0 - movs r3, 0x1 - orrs r6, r3 - b _0805DAA8 - .align 2, 0 -_0805DA58: .4byte gDungeon -_0805DA5C: .4byte 0xffffff00 -_0805DA60: - ldr r5, _0805DA78 - ldr r0, [r5] - movs r1, 0xB8 - lsls r1, 3 - adds r0, r1 - movs r2, 0x1 - str r2, [r0] - ldr r0, _0805DA7C - ands r6, r0 - orrs r6, r2 - b _0805DAA8 - .align 2, 0 -_0805DA78: .4byte gDungeon -_0805DA7C: .4byte 0xffffff00 -_0805DA80: - ldr r3, _0805DA98 - ldr r0, [r3] - movs r5, 0xB8 - lsls r5, 3 - adds r0, r5 - str r2, [r0] - ldr r0, _0805DA9C - ands r6, r0 - movs r0, 0x1 - orrs r6, r0 - b _0805DAA8 - .align 2, 0 -_0805DA98: .4byte gDungeon -_0805DA9C: .4byte 0xffffff00 -_0805DAA0: - ldr r0, _0805DAB8 - ands r6, r0 - movs r1, 0x1 - orrs r6, r1 -_0805DAA8: - ldr r0, _0805DABC - ands r6, r0 - ldr r0, _0805DAC0 - ands r6, r0 - movs r0, 0x80 - lsls r0, 9 - orrs r6, r0 - b _0805E1AE - .align 2, 0 -_0805DAB8: .4byte 0xffffff00 -_0805DABC: .4byte 0xffff00ff -_0805DAC0: .4byte 0xff00ffff -_0805DAC4: - ldr r0, _0805DADC - ands r6, r0 - movs r2, 0x1 - orrs r6, r2 - ldr r0, _0805DAE0 - ands r6, r0 - movs r0, 0x80 - lsls r0, 1 - orrs r6, r0 -_0805DAD6: - ldr r0, _0805DAE4 - ands r6, r0 - b _0805E1AE - .align 2, 0 -_0805DADC: .4byte 0xffffff00 -_0805DAE0: .4byte 0xffff00ff -_0805DAE4: .4byte 0xff00ffff -_0805DAE8: - ldr r0, _0805DB3C - ands r6, r0 -_0805DAEC: - ldr r0, _0805DB40 - ands r6, r0 - ldr r0, _0805DB44 - ands r6, r0 - movs r3, 0 - str r3, [sp, 0x8] - movs r0, 0 - bl sub_8044C50 - ldr r0, _0805DB48 - mov r5, sp - ldrb r5, [r5, 0x8] - strb r5, [r0] - ldr r0, _0805DB4C - mov r1, sp - ldrb r1, [r1, 0x8] - strb r1, [r0] - lsls r0, r6, 24 - mov r2, r8 - adds r2, 0x44 - str r2, [sp, 0x1C] - str r0, [sp, 0x14] - ldr r3, [sp, 0x10] - adds r3, 0x32 - str r3, [sp, 0x18] - cmp r0, 0 - beq _0805DB24 - b _0805E1AE -_0805DB24: - ldr r0, _0805DB50 - ldrh r1, [r0] - adds r1, 0x1 - strh r1, [r0] - ldr r5, [sp, 0x18] - ldrb r0, [r5] - cmp r0, 0 - beq _0805DB54 - movs r0, 0 - str r0, [sp, 0x8] - b _0805DB5A - .align 2, 0 -_0805DB3C: .4byte 0xffffff00 -_0805DB40: .4byte 0xffff00ff -_0805DB44: .4byte 0xff00ffff -_0805DB48: .4byte gUnknown_202F230 -_0805DB4C: .4byte gUnknown_202F231 -_0805DB50: .4byte gUnknown_202F22E -_0805DB54: - ldr r1, [sp, 0x8] - adds r1, 0x1 - str r1, [sp, 0x8] -_0805DB5A: - ldr r2, [sp, 0xC] - cmp r2, 0 - beq _0805DB6E - subs r2, 0x1 - str r2, [sp, 0xC] - cmp r2, 0 - bne _0805DB6E - movs r0, 0 - bl sub_8075680 -_0805DB6E: - mov r0, r10 - bl sub_805E2C4 - movs r7, 0 - movs r1, 0 - add r0, sp, 0x4 -_0805DB7A: - strb r1, [r0] - subs r0, 0x1 - cmp r0, sp - bge _0805DB7A - ldr r0, _0805DBEC - ldrh r1, [r0] - movs r4, 0x1 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805DBAA - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0805DBAA - movs r0, 0x9E - lsls r0, 1 - add r0, r8 - ldr r0, [r0] - bl RoundUpFixedPoint - cmp r0, 0 - beq _0805DBAA - b _0805D9EC -_0805DBAA: - movs r3, 0 - mov r9, r3 - ldr r4, _0805DBEC - ldrh r1, [r4, 0x2] - movs r5, 0x1 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0805DBBE - b _0805DD02 -_0805DBBE: - ldrh r1, [r4] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0805DBF8 - movs r0, 0x9E - lsls r0, 1 - add r0, r8 - ldr r0, [r0] - bl RoundUpFixedPoint - cmp r0, 0 - bne _0805DBDA - b _0805DD02 -_0805DBDA: - movs r0, 0x1 - bl sub_8044C50 - ldr r1, _0805DBF0 - ldr r0, [r1] - ldr r2, _0805DBF4 - adds r0, r2 - strb r5, [r0] - b _0805E1AE - .align 2, 0 -_0805DBEC: .4byte gRealInputs -_0805DBF0: .4byte gDungeon -_0805DBF4: .4byte 0x00000673 -_0805DBF8: - mov r0, r10 - movs r1, 0x1 - bl ShouldMonsterRunAwayAndShowEffect - lsls r0, 24 - cmp r0, 0 - beq _0805DC08 - b _0805DA08 -_0805DC08: - ldrh r0, [r4] - movs r3, 0x80 - lsls r3, 2 - adds r1, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0805DCE8 - movs r4, 0 - movs r2, 0x8C - lsls r2, 1 - add r2, r8 - movs r3, 0x8 -_0805DC20: - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805DC32 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0805DC3A -_0805DC32: - adds r2, 0x8 - adds r4, 0x1 - cmp r4, 0x3 - ble _0805DC20 -_0805DC3A: - cmp r4, 0x4 - bne _0805DC40 - b _0805DA18 -_0805DC40: - movs r3, 0 - movs r5, 0x8C - lsls r5, 1 - movs r7, 0x1 - mov r2, r8 -_0805DC4A: - lsls r0, r3, 3 - add r0, r8 - adds r0, r5 - ldrb r1, [r0] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _0805DC66 - movs r1, 0x8E - lsls r1, 1 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0805DC6E -_0805DC66: - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x3 - ble _0805DC4A -_0805DC6E: - cmp r3, 0x4 - bne _0805DC74 - b _0805DA20 -_0805DC74: - movs r7, 0 - adds r3, r4, 0 - cmp r4, 0x3 - bgt _0805DCB6 - lsls r0, r4, 3 - adds r2, r0, 0 - add r2, r8 - mov r12, r2 - movs r5, 0x8E - lsls r5, 1 - adds r0, r5 - mov r1, r8 - adds r2, r0, r1 - movs r5, 0x2 -_0805DC90: - ldrb r0, [r2] - cmp r0, 0 - bne _0805DCCC - movs r0, 0x8 - add r12, r0 - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x3 - bgt _0805DCB6 - cmp r3, r4 - beq _0805DC90 - movs r0, 0x8C - lsls r0, 1 - add r0, r12 - ldrb r1, [r0] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _0805DC90 -_0805DCB6: - cmp r7, 0 - bne _0805DCCC - ldr r0, _0805DCC8 -_0805DCBC: - ldr r1, [r0] - mov r0, r10 - bl SendMessage - b _0805E1AE - .align 2, 0 -_0805DCC8: .4byte gUnknown_80F8A4C -_0805DCCC: - ldr r0, [sp, 0x1C] - movs r1, 0x14 - bl SetMonsterActionFields - mov r0, r10 - bl GetTeamMemberEntityIndex - mov r1, r8 - adds r1, 0x48 - strb r0, [r1] - mov r0, r8 - adds r0, 0x50 - strb r4, [r0] - b _0805E1AE -_0805DCE8: - mov r0, r10 - mov r1, r8 - bl sub_805EF60 - lsls r0, 24 - cmp r0, 0 - beq _0805DCF8 - b _0805E1AE -_0805DCF8: - ldr r0, [sp, 0x1C] - movs r1, 0x32 - bl SetMonsterActionFields - b _0805E1AE -_0805DD02: - ldr r3, _0805DDC8 - ldrh r1, [r3, 0x6] - movs r2, 0x2 - adds r0, r2, 0 - ands r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _0805DD16 - b _0805DA2A -_0805DD16: - mov r0, sp - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _0805DD20 - b _0805DA40 -_0805DD20: - mov r0, sp - ldrb r0, [r0, 0x2] - cmp r0, 0 - beq _0805DD2A - b _0805DA60 -_0805DD2A: - mov r0, sp - ldrb r0, [r0, 0x3] - cmp r0, 0 - beq _0805DD34 - b _0805DA80 -_0805DD34: - mov r0, sp - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _0805DD3E - b _0805DAA0 -_0805DD3E: - ldr r0, _0805DDCC - ldr r1, [sp, 0x8] - cmp r1, r0 - ble _0805DD48 - b _0805DAC4 -_0805DD48: - ldr r0, _0805DDD0 - ldr r0, [r0] - ldrb r4, [r0, 0x9] - cmp r4, 0 - bne _0805DD7E - ldrh r1, [r3, 0x2] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0805DD66 - cmp r7, 0 - bne _0805DD7E - movs r2, 0 - cmp r2, 0 - beq _0805DD7E -_0805DD66: - ldr r3, [sp, 0x18] - ldrb r0, [r3] - cmp r0, 0 - beq _0805DD7E - bl sub_804AA60 - ldr r0, _0805DDD4 - strb r4, [r0] - bl ResetRepeatTimers - bl ResetUnusedInputStruct -_0805DD7E: - ldr r2, _0805DDC8 - ldrh r0, [r2] - movs r5, 0x80 - lsls r5, 2 - adds r1, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _0805DDA4 - ldrh r1, [r2, 0x2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0805DDA4 - bl sub_80532B4 - bl ResetRepeatTimers - bl ResetUnusedInputStruct -_0805DDA4: - movs r4, 0 - ldr r0, _0805DDC8 - ldrh r0, [r0] - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0805DDFA - ldr r1, _0805DDD8 - ldrb r0, [r1] - cmp r0, 0 - bne _0805DDC2 - ldr r0, _0805DDDC - strh r4, [r0] -_0805DDC2: - movs r3, 0x1 - strb r3, [r1] - b _0805DDFE - .align 2, 0 -_0805DDC8: .4byte gRealInputs -_0805DDCC: .4byte 0x00000707 -_0805DDD0: .4byte gGameOptionsRef -_0805DDD4: .4byte gUnknown_202F22D -_0805DDD8: .4byte gUnknown_202F22C -_0805DDDC: .4byte gUnknown_202F22E -_0805DDE0: - movs r0, 0xB - bl sub_8044C50 - adds r2, r4, 0x1 - mov r0, r8 - adds r0, 0x48 - movs r1, 0 - strb r2, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - b _0805DE92 -_0805DDFA: - ldr r0, _0805DEF8 - strb r4, [r0] -_0805DDFE: - movs r3, 0 - ldr r0, _0805DEFC - ldr r0, [r0] - ldrb r0, [r0, 0x9] - cmp r0, 0 - bne _0805DE2C - ldr r2, _0805DF00 - ldrh r0, [r2, 0x6] - movs r5, 0x80 - lsls r5, 1 - adds r1, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _0805DE2A - mov r0, r9 - cmp r0, 0 - bne _0805DE2A - ldrh r1, [r2, 0x2] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0805DE2C -_0805DE2A: - movs r3, 0x1 -_0805DE2C: - cmp r3, 0 - beq _0805DE54 - mov r0, r10 - bl sub_805E738 - ldr r0, _0805DF04 - movs r1, 0x1 - strb r1, [r0] - mov r0, r8 - adds r0, 0x46 - ldrb r0, [r0] - ldr r1, [sp, 0x10] - adds r1, 0x33 - strb r0, [r1] - ldr r1, [sp, 0x10] - adds r1, 0x34 - movs r0, 0xFF - strb r0, [r1] - bl ResetRepeatTimers -_0805DE54: - ldr r0, _0805DF00 - ldr r1, [r0] - ldr r0, _0805DF08 - ands r1, r0 - cmp r1, r0 - bne _0805DE62 - movs r4, 0x1 -_0805DE62: - mov r0, sp - ldrb r0, [r0] - cmp r0, 0 - beq _0805DE6C - movs r4, 0x1 -_0805DE6C: - cmp r4, 0 - beq _0805DE9C - movs r4, 0 - ldr r0, _0805DF0C - ldr r2, [r0] - movs r3, 0x10 -_0805DE78: - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805DE8A - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0805DDE0 -_0805DE8A: - adds r2, 0x4 - adds r4, 0x1 - cmp r4, 0x13 - ble _0805DE78 -_0805DE92: - ldr r2, [sp, 0x1C] - ldrh r0, [r2] - cmp r0, 0 - beq _0805DE9C - b _0805E1AE -_0805DE9C: - ldr r5, _0805DF10 - ldr r3, [r5] - ldr r1, _0805DF14 - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0805DF82 - ldr r0, _0805DEFC - ldr r2, [r0] - ldrb r0, [r2, 0x4] - cmp r0, 0x6 - beq _0805DF82 - ldr r0, _0805DF00 - ldrh r1, [r0, 0x2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0805DF82 - ldrb r4, [r2, 0x4] - ldr r0, _0805DF18 - movs r2, 0x1 - strb r2, [r0] - ldr r5, _0805DF1C - adds r0, r3, r5 - strb r2, [r0] - bl sub_8094C48 - lsls r0, 24 - cmp r0, 0 - bne _0805DEDC - bl sub_8094C88 -_0805DEDC: - movs r0, 0x1 - bl sub_8052210 - bl sub_8040A84 - movs r0, 0x1E - bl SetBGOBJEnableFlags - movs r0, 0xA - movs r1, 0x2F - bl sub_803E708 - b _0805DF3A - .align 2, 0 -_0805DEF8: .4byte gUnknown_202F22C -_0805DEFC: .4byte gGameOptionsRef -_0805DF00: .4byte gRealInputs -_0805DF04: .4byte gUnknown_202F22D -_0805DF08: .4byte 0x01000200 -_0805DF0C: .4byte gTeamInventoryRef -_0805DF10: .4byte gDungeon -_0805DF14: .4byte 0x0001820a -_0805DF18: .4byte gUnknown_202EE00 -_0805DF1C: .4byte 0x00018214 -_0805DF20: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805DF3A - ldr r2, _0805DFA0 - movs r1, 0 - ldrb r0, [r2] - cmp r0, 0 - bne _0805DF34 - movs r1, 0x1 -_0805DF34: - strb r1, [r2] - bl sub_8040A84 -_0805DF3A: - movs r0, 0x2F - bl sub_803E46C - ldr r0, _0805DFA4 - ldrh r1, [r0, 0x2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0805DF54 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0805DF20 -_0805DF54: - ldr r1, _0805DFA8 - ldr r0, [r1] - ldr r2, _0805DFAC - adds r0, r2 - movs r1, 0 - strb r1, [r0] - ldr r0, _0805DFB0 - ldr r0, [r0] - strb r4, [r0, 0x4] - ldr r0, _0805DFA0 - movs r3, 0x1 - strb r3, [r0] - bl sub_8040A84 - movs r0, 0 - bl SetBGOBJEnableFlags - movs r0, 0x2F - bl sub_803E46C - movs r0, 0x2F - bl sub_803E46C -_0805DF82: - ldr r5, _0805DFA8 - ldr r0, [r5] - ldr r1, _0805DFB4 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0805DFBC - ldr r0, _0805DFB8 - ldrb r0, [r0] - cmp r0, 0 - bne _0805DFBC - ldr r0, _0805DFA4 - ldrh r2, [r0, 0x2] - adds r1, r2, 0 - b _0805DFCC - .align 2, 0 -_0805DFA0: .4byte gUnknown_202EE00 -_0805DFA4: .4byte gRealInputs -_0805DFA8: .4byte gDungeon -_0805DFAC: .4byte 0x00018214 -_0805DFB0: .4byte gGameOptionsRef -_0805DFB4: .4byte 0x0000066d -_0805DFB8: .4byte gUnknown_202F22C -_0805DFBC: - ldr r3, _0805E05C - ldrh r1, [r3] - ldr r2, [sp, 0x18] - ldrb r0, [r2] - adds r2, r1, 0 - cmp r0, 0 - beq _0805DFCC - ldrh r2, [r3, 0x2] -_0805DFCC: - movs r0, 0xF0 - ands r1, r0 - ands r2, r0 - movs r5, 0x1 - negs r5, r5 - cmp r1, 0x50 - bne _0805DFDC - movs r5, 0x3 -_0805DFDC: - cmp r1, 0x60 - bne _0805DFE2 - movs r5, 0x5 -_0805DFE2: - cmp r1, 0x90 - bne _0805DFE8 - movs r5, 0x1 -_0805DFE8: - cmp r1, 0xA0 - bne _0805DFEE - movs r5, 0x7 -_0805DFEE: - cmp r2, 0x40 - bne _0805DFF4 - movs r5, 0x4 -_0805DFF4: - cmp r2, 0x80 - bne _0805DFFA - movs r5, 0 -_0805DFFA: - cmp r2, 0x10 - bne _0805E000 - movs r5, 0x2 -_0805E000: - cmp r2, 0x20 - bne _0805E006 - movs r5, 0x6 -_0805E006: - cmp r5, 0 - bge _0805E00C - b _0805E1A0 -_0805E00C: - ldr r0, _0805E060 - ldrb r0, [r0] - cmp r0, 0 - beq _0805E020 - adds r0, r5, 0 - movs r3, 0x1 - ands r0, r3 - cmp r0, 0 - bne _0805E020 - b _0805E1A0 -_0805E020: - mov r2, r8 - adds r2, 0x46 - ldrb r1, [r2] - eors r1, r5 - negs r0, r1 - orrs r0, r1 - lsrs r7, r0, 31 - movs r1, 0x7 - adds r0, r5, 0 - ands r0, r1 - strb r0, [r2] - ldr r0, _0805E064 - ldrb r0, [r0] - cmp r0, 0 - beq _0805E068 - ldr r0, [sp, 0x10] - adds r0, 0x33 - strb r5, [r0] - mov r0, r10 - bl sub_806CEBC - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r10 - adds r2, r5, 0 - bl sub_806CDD4 - b _0805E1A0 - .align 2, 0 -_0805E05C: .4byte gRealInputs -_0805E060: .4byte gUnknown_202F22C -_0805E064: .4byte gUnknown_202F22D -_0805E068: - movs r4, 0 - movs r3, 0 - mov r0, r10 - movs r1, 0x1 - str r3, [sp, 0x20] - bl sub_805EC4C - lsls r0, 24 - ldr r3, [sp, 0x20] - cmp r0, 0 - beq _0805E080 - b _0805E1AE -_0805E080: - mov r0, r8 - adds r0, 0xB0 - ldrb r0, [r0] - cmp r0, 0x2 - bne _0805E094 - ldr r0, _0805E090 - b _0805E0BE - .align 2, 0 -_0805E090: .4byte gUnknown_80F8A84 -_0805E094: - cmp r0, 0x7 - bne _0805E0A0 - ldr r0, _0805E09C - b _0805E0BE - .align 2, 0 -_0805E09C: .4byte gUnknown_80F8A6C -_0805E0A0: - cmp r0, 0x5 - bne _0805E0AC - ldr r0, _0805E0A8 - b _0805E0BE - .align 2, 0 -_0805E0A8: .4byte gUnknown_80F8AB0 -_0805E0AC: - cmp r0, 0x3 - bne _0805E0B8 - ldr r0, _0805E0B4 - b _0805E0BE - .align 2, 0 -_0805E0B4: .4byte gUnknown_80F8ADC -_0805E0B8: - cmp r0, 0x4 - bne _0805E0C2 - ldr r0, _0805E128 -_0805E0BE: - ldr r3, [r0] - movs r4, 0x1 -_0805E0C2: - mov r0, r10 - adds r1, r5, 0 - str r3, [sp, 0x20] - bl CanMoveInDirection - lsls r0, 24 - ldr r3, [sp, 0x20] - cmp r0, 0 - bne _0805E0D8 - movs r0, 0x2 - orrs r4, r0 -_0805E0D8: - cmp r7, 0 - beq _0805E0F4 - mov r0, r10 - str r3, [sp, 0x20] - bl sub_806CEBC - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r10 - adds r2, r5, 0 - bl sub_806CDD4 - ldr r3, [sp, 0x20] -_0805E0F4: - movs r7, 0x2 - adds r0, r4, 0 - ands r0, r7 - cmp r0, 0 - bne _0805E192 - movs r5, 0x1 - mov r9, r5 - ands r5, r4 - cmp r5, 0 - beq _0805E134 - cmp r3, 0 - beq _0805E114 - mov r0, r10 - adds r1, r3, 0 - bl SendMessage -_0805E114: - movs r0, 0x1 - bl sub_8044C50 - ldr r1, _0805E12C - ldr r0, [r1] - ldr r2, _0805E130 - adds r0, r2 - mov r3, r9 - strb r3, [r0] - b _0805E1AE - .align 2, 0 -_0805E128: .4byte gUnknown_80F8B0C -_0805E12C: .4byte gDungeon -_0805E130: .4byte 0x00000673 -_0805E134: - movs r0, 0x2 - bl sub_8044C50 - ldr r0, _0805E17C - ldrh r1, [r0] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _0805E14C - movs r0, 0 - cmp r0, 0 - beq _0805E188 -_0805E14C: - movs r0, 0x9E - lsls r0, 1 - add r0, r8 - ldr r0, [r0] - bl RoundUpFixedPoint - cmp r0, 0 - beq _0805E188 - mov r1, r10 - ldr r0, [r1, 0x70] - adds r0, 0xBC - ldrb r0, [r0] - cmp r0, 0x2 - beq _0805E174 - ldr r2, _0805E180 - ldr r0, [r2] - ldr r3, _0805E184 - adds r0, r3 - mov r1, r9 - strb r1, [r0] -_0805E174: - mov r0, r8 - adds r0, 0x48 - strb r5, [r0] - b _0805E1AE - .align 2, 0 -_0805E17C: .4byte gRealInputs -_0805E180: .4byte gDungeon -_0805E184: .4byte 0x0000066c -_0805E188: - mov r0, r8 - adds r0, 0x48 - movs r2, 0x1 - strb r2, [r0] - b _0805E1AE -_0805E192: - movs r3, 0x1 - ands r4, r3 - cmp r4, 0 - beq _0805E1A0 - movs r0, 0x23 - bl sub_803E724 -_0805E1A0: - movs r0, 0xF - bl sub_803E46C - ldr r5, [sp, 0x14] - cmp r5, 0 - bne _0805E1AE - b _0805DB24 -_0805E1AE: - ldr r1, [sp, 0x18] - ldrb r0, [r1] - cmp r0, 0 - beq _0805E1BA - bl sub_804AA60 -_0805E1BA: - ldr r4, [sp, 0x1C] - ldrh r0, [r4] - cmp r0, 0x2D - beq _0805E1C6 - cmp r0, 0x13 - bne _0805E1E0 -_0805E1C6: - mov r0, r10 - bl HandleTalkFieldAction - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _0805E2B0 - movs r0, 0 - bl sub_8044C50 - bl _0805D980 -_0805E1E0: - lsls r0, r6, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805E222 - ldr r2, _0805E210 - ldr r0, [r2] - ldr r3, _0805E214 - adds r0, r3 - strb r1, [r0] - ldrh r0, [r4] - cmp r0, 0 - beq _0805E218 - mov r0, r10 - movs r1, 0 - bl IsNotAttacking - lsls r0, 24 - cmp r0, 0 - bne _0805E2B0 - movs r0, 0xF - bl sub_803E46C - b _0805E2B0 - .align 2, 0 -_0805E210: .4byte gDungeon -_0805E214: .4byte 0x0000066d -_0805E218: - movs r0, 0xF - bl sub_803E46C - bl _0805D980 -_0805E222: - movs r0, 0xF - bl sub_803E46C - bl sub_8047158 - movs r2, 0 - lsrs r0, r6, 8 - lsls r0, 24 - cmp r0, 0 - bne _0805E238 - movs r2, 0x1 -_0805E238: - lsrs r1, r6, 16 - lsls r1, 24 - lsrs r1, 24 - adds r0, r2, 0 - bl ShowFieldMenu - bl ResetRepeatTimers - bl ResetUnusedInputStruct - ldr r1, _0805E294 - movs r0, 0 - strb r0, [r1] - movs r0, 0 - ldr r5, [sp, 0x18] - strb r0, [r5] - bl sub_804AA60 - bl sub_8044B28 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805E2B0 - ldrh r0, [r4] - cmp r0, 0 - beq _0805E29C - cmp r0, 0x2B - bne _0805E27E - ldr r2, _0805E298 - ldr r0, [r2] - movs r3, 0x1 - strb r3, [r0, 0x4] - ldr r0, [r2] - strb r3, [r0, 0x3] -_0805E27E: - ldr r5, [sp, 0x1C] - ldrh r0, [r5] - cmp r0, 0x2E - bne _0805E2B0 - ldr r2, _0805E298 - ldr r0, [r2] - movs r3, 0x1 - strb r3, [r0, 0x4] - ldr r0, [r2] - strb r1, [r0, 0x3] - b _0805E2B0 - .align 2, 0 -_0805E294: .4byte gUnknown_202F22D -_0805E298: .4byte gDungeon -_0805E29C: - movs r0, 0xF - bl sub_803E46C - ldr r5, _0805E2C0 - ldr r0, [r5] - ldrb r0, [r0, 0x4] - cmp r0, 0 - bne _0805E2B0 - bl _0805D980 -_0805E2B0: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805E2C0: .4byte gDungeon - thumb_func_end sub_805D8C8 - thumb_func_start sub_805E2C4 sub_805E2C4: push {r4-r7,lr} diff --git a/include/structs/dungeon_entity.h b/include/structs/dungeon_entity.h index 9d5bfac1a..86af187c5 100644 --- a/include/structs/dungeon_entity.h +++ b/include/structs/dungeon_entity.h @@ -66,7 +66,7 @@ typedef struct AITarget } AITarget; -typedef struct Sleep +typedef struct Sleep { /* 0x0 */ u8 sleep; /* 0x1 */ u8 sleepTurns; @@ -77,7 +77,7 @@ typedef struct NonVolatile /* 0x0 */ u8 nonVolatileStatus; /* 0x1 */ u8 nonVolatileStatusTurns; /* 0x2 */ u8 nonVolatileStatusDamageCountdown; - /* 0x3 */ u8 unk4; + /* 0x3 */ u8 unk4; } NonVolatile; typedef struct Immobilize @@ -107,7 +107,7 @@ typedef struct Protection /* 0x1 */ u8 protectionStatusTurns; } Protection; -typedef struct Waiting +typedef struct Waiting { /* 0xC8 */ u8 waitingStatus; /* 0xC9 */ bool8 enemyDecoy; // True if the Pokémon is a decoy and a wild Pokémon (i.e., not an allied Pokémon). @@ -116,7 +116,7 @@ typedef struct Waiting /* 0xCC */ u8 curseDamageCountdown; } Waiting; -typedef struct Linked +typedef struct Linked { /* 0xD0 */ u8 linkedStatus; /* 0xD4 */ u32 unkD4; @@ -126,7 +126,7 @@ typedef struct Linked } Linked; -typedef struct MoveStatus +typedef struct MoveStatus { /* 0xDC */ u8 moveStatus; /* 0xDD */ u8 moveStatusTurns; @@ -143,13 +143,13 @@ typedef struct TransformStatus /* 0xE5 */ u8 transformStatusTurns; } TransformStatus; -typedef struct EyesightStatus +typedef struct EyesightStatus { /* 0xE8 */ u8 eyesightStatus; /* 0xE9 */ u8 eyesightStatusTurns; } EyesightStatus; -typedef struct Muzzled +typedef struct Muzzled { /* 0xEC */ bool8 muzzled; /* 0xED */ u8 muzzledTurns; diff --git a/include/structs/str_dungeon.h b/include/structs/str_dungeon.h index beb041540..d566e6c90 100644 --- a/include/structs/str_dungeon.h +++ b/include/structs/str_dungeon.h @@ -65,6 +65,42 @@ typedef struct DungeonMusicPlayer /* 0xE */ u16 queuedSongIndex; } DungeonMusicPlayer; +// Size unknown? +typedef struct unkDungeonGlobal_unk181E8_sub +{ + /* 0x181E8 */ Position cameraPos; + /* 0x181EC */ Position cameraPosMirror; + /* 0x181F0 */ Position cameraPixelPos; + /* 0x181F4 */ Position cameraPixelPosMirror; + /* 0x181F8 */ Entity *cameraTarget; + u32 unk181FC; + u32 unk18200; + u32 unk18204; + u8 unk18208; + /* 0x18209 */ u8 visibilityRange; // Dungeon light level. + /* 0x1820A */ bool8 blinded; // Blacks out the screen when the player has the Blinker status. + u8 unk1820B; + u8 unk1820C; + u8 unk1820D; + u8 unk1820E; + u8 unk1820F; + /* 0x18210 */ bool8 hallucinating; // Displays Substitute and flower sprites when the player has the Cross-Eyed status. + u8 unk18211; + u8 unk18212; + u8 unk18213; + u8 unk18214; + u8 fill18215[2]; + u8 unk18217; + u8 fill18218; + u8 fill18219; + u8 unk1821A; + u8 unk1821B; + u8 unk1821C; + u8 fill1821D; + u8 fill1821E; + u8 fill1821F; +} unkDungeonGlobal_unk181E8_sub; + // size: 0x1CEDC typedef struct Dungeon { @@ -93,7 +129,9 @@ typedef struct Dungeon /* 0x179 */ bool8 pokemonExposed; // True if a Pokémon on the floor has the Exposed status. u8 fill17A[0x17C - 0x17A]; Dungeon_sub unk17C[0x100]; - /* 0x57C */ u8 fill57C[0x644 - 0x57c]; + /* 0x57C */ u8 fill57C[0x5C0 - 0x57c]; + /* 0x5C0 */ s32 unk5C0; + /* 0x5C4 */ u8 fill5C4[0x644 - 0x5C4]; /* 0x644 */ DungeonLocation dungeonLocation; u8 fill646[0x654 - 0x648]; u8 unk654; @@ -131,16 +169,16 @@ typedef struct Dungeon s32 unk690; s32 unk694; u8 fill698; - u8 unk699; + u8 unk699; u8 fill69A[0x69C - 0x69A]; /* 0x69C */ EntityInfo unk69C[4]; - u8 fillEBC[0x363C - 0xEBC]; + u8 fillEBC[0x363C - 0xEBC]; /* 0x363C */ u8 expYieldRankings[NUM_MONSTERS]; u8 fill37D9[0x37F0 - 0x37D9]; /* 0x37F0 */ u32 unk37F0; /* 0x37F4 */ s32 unk37F4; /* 0x37F8 */ bool8 plusIsActive[2]; // Index 0: Enemy , Index 1: Team - /* 0x37FA */ bool8 minusIsActive[2]; // Index 0: Enemy , Index 1: Team + /* 0x37FA */ bool8 minusIsActive[2]; // Index 0: Enemy , Index 1: Team /* 0x37FC */ bool8 decoyActive; u8 fill37FD; /* 0x37FE */ bool8 deoxysDefeat; // Flag set for deoxys in Meteor Cave @@ -220,31 +258,8 @@ typedef struct Dungeon /* 0x17B3C */ u32 unk17B40; /* 0x17B44 */ OpenedFile *sprites[MONSTER_MAX]; /* 0x181E4 */ OpenedFile *paletFile; - /* 0x181E8 */ Position cameraPos; - /* 0x181EC */ Position cameraPosMirror; - /* 0x181F0 */ Position cameraPixelPos; - /* 0x181F4 */ Position cameraPixelPosMirror; - /* 0x181F8 */ Entity *cameraTarget; - u32 unk181FC; - u32 unk18200; - u32 unk18204; - u8 unk18208; - /* 0x18209 */ u8 visibilityRange; // Dungeon light level. - /* 0x1820A */ bool8 blinded; // Blacks out the screen when the player has the Blinker status. - u8 unk1820B; - u8 unk1820C; - u8 unk1820D; - u8 unk1820E; - u8 unk1820F; - /* 0x18210 */ bool8 hallucinating; // Displays Substitute and flower sprites when the player has the Cross-Eyed status. - u8 unk18211; - u8 unk18212; - u8 unk18213; - u8 fill18214[3]; - u8 unk18217; - u8 fill18218[0x1821A - 0x18218]; - u8 unk1821A; - u8 fill1821B[0x1C578 - 0x1821B]; + /* 0x181E8 */ unkDungeonGlobal_unk181E8_sub unk181e8; + u8 fill18220[0x1C578 - 0x18220]; u8 unk1C578; u8 fill1C579[0x1C57E - 0x1C579]; u8 unk1C57E; diff --git a/ld_script.txt b/ld_script.txt index fb23cf5ad..d809137ea 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -228,6 +228,7 @@ SECTIONS { src/move_actions.o(.text); src/status_actions.o(.text); src/move_checks.o(.text); + src/code_805D8C8_1.o(.text); asm/code_805D8C8.o(.text); src/code_8066D04.o(.text); asm/code_8066D04.o(.text); diff --git a/src/code_8040094.c b/src/code_8040094.c index 85657d9ba..aeb697ad5 100644 --- a/src/code_8040094.c +++ b/src/code_8040094.c @@ -31,7 +31,7 @@ void HandleLuminousOrbAction(Entity *pokemon) int XCoord; int YCoord; - gDungeon->unk1820B = 1; + gDungeon->unk181e8.unk1820B = 1; for(YCoord = 0; YCoord < DUNGEON_MAX_SIZE_Y; YCoord++) { @@ -49,7 +49,7 @@ void HandleLuminousOrbAction(Entity *pokemon) void sub_8040094(u8 r0) { - gDungeon->unk18217 = r0; + gDungeon->unk181e8.unk18217 = r0; sub_803F7BC(); sub_80060EC(); IncrementPlayTime(gPlayTimeRef); @@ -63,15 +63,15 @@ void sub_8040094(u8 r0) void sub_80400D4(void) { s32 temp; - temp = gDungeon->unk18200; + temp = gDungeon->unk181e8.unk18200; if(temp == 0) return; if(temp > 0x1E) temp = 0x1F; - gDungeon->unk181FC = gUnknown_80F6568[temp]; - gDungeon->unk18200--; - if(gDungeon->unk18200 == 0) - gDungeon->unk18200 = gDungeon->unk18204; + gDungeon->unk181e8.unk181FC = gUnknown_80F6568[temp]; + gDungeon->unk181e8.unk18200--; + if(gDungeon->unk181e8.unk18200 == 0) + gDungeon->unk181e8.unk18200 = gDungeon->unk181e8.unk18204; } void sub_8040124(void) diff --git a/src/code_8041AD0.c b/src/code_8041AD0.c index 935e46f66..bf11e568d 100644 --- a/src/code_8041AD0.c +++ b/src/code_8041AD0.c @@ -76,7 +76,7 @@ s32 sub_80416E0(Position32 *pos, u32 param_2, u8 param_3); s32 sub_80416A4(Position *pos_1, u32 param_2, u8 param_3) { Position32 pos; - + pos.x = pos_1->x * 0x1800 + 0xc00; pos.y = pos_1->y * 0x1800 + 0x1000; return sub_80416E0(&pos, param_2, param_3); @@ -95,7 +95,7 @@ s32 sub_80416E0(Position32 *pos, u32 param_2, u8 param_3) auStack_10.x = pos->x / 256; auStack_10.y = pos->y / 256; - + auStack_10.unk14 = -1; auStack_10.unk10 = 0; auStack_10.unk12 = 0; @@ -126,9 +126,9 @@ void sub_804178C(u8 param_1) { u32 temp; s32 counter; - + counter = 0; - gDungeon->unk18204 = 0; + gDungeon->unk181e8.unk18204 = 0; if (sub_800E9FC(param_1) != 0) { while ((counter < 1000 && (sub_800E9FC(param_1) != 0))) { sub_803E46C(0x4a); @@ -196,7 +196,7 @@ void EntityUpdateStatusSprites(Entity *entity) EntityInfo *entityInfo; u32 spriteStatus; u8 temp; - + if (EntityExists(entity)) { entityInfo = entity->info; spriteStatus = 0; @@ -204,7 +204,7 @@ void EntityUpdateStatusSprites(Entity *entity) if (entityInfo->id == 0xb9) { // NOTE: clean this up sometime - temp = entityInfo->sleep.sleepTurns; + temp = entityInfo->sleep.sleepTurns; flag = 0x7f; temp ^= flag; flag = (temp) != 0; @@ -212,7 +212,7 @@ void EntityUpdateStatusSprites(Entity *entity) if (flag) { spriteStatus = gStatusSpriteMasks_SleepStatus[entityInfo->sleep.sleep]; } - spriteStatus = spriteStatus | + spriteStatus = spriteStatus | gStatusSpriteMasks_NonVolatileStatus[entityInfo->nonVolatile.nonVolatileStatus] | gStatusSpriteMasks_ImmobilizeStatus[entityInfo->immobilize.immobilizeStatus] | gStatusSpriteMasks_VolatileStatus[entityInfo->volatileStatus.volatileStatus] | @@ -245,15 +245,15 @@ void EntityUpdateStatusSprites(Entity *entity) if ((gDungeon->itemHoldersIdentified) && (entityInfo->heldItem.flags & ITEM_FLAG_EXISTS)) { spriteStatus = spriteStatus | STATUS_SPRITE_LOWHP; } - if ( (entityInfo->offensiveMultipliers[0] < DEFAULT_STAT_MULTIPLIER) || + if ( (entityInfo->offensiveMultipliers[0] < DEFAULT_STAT_MULTIPLIER) || (entityInfo->offensiveMultipliers[1] < DEFAULT_STAT_MULTIPLIER) || (entityInfo->defensiveMultipliers[0] < DEFAULT_STAT_MULTIPLIER) || (entityInfo->defensiveMultipliers[1] < DEFAULT_STAT_MULTIPLIER) || (entityInfo->offensiveStages[0] < DEFAULT_STAT_STAGE) || (entityInfo->offensiveStages[1] < DEFAULT_STAT_STAGE) || - (entityInfo->defensiveStages[0] < DEFAULT_STAT_STAGE) || + (entityInfo->defensiveStages[0] < DEFAULT_STAT_STAGE) || (entityInfo->defensiveStages[1] < DEFAULT_STAT_STAGE) || - (entityInfo->hitChanceStages[0]) < DEFAULT_STAT_STAGE || + (entityInfo->hitChanceStages[0]) < DEFAULT_STAT_STAGE || (entityInfo->hitChanceStages[1] < DEFAULT_STAT_STAGE)) { spriteStatus = spriteStatus | STATUS_SPRITE_STAT_DOWN; } diff --git a/src/code_80428A0.c b/src/code_80428A0.c index 6d605ee95..a44338a8b 100644 --- a/src/code_80428A0.c +++ b/src/code_80428A0.c @@ -158,7 +158,7 @@ void sub_8042A84(s16 param_1, Entity *entity, u32 param_3) s32 param_1_s16; param_1_s16 = param_1; - + r6 = 0x200; if (sub_8042768(entity) != 0) { sub_804151C(entity,param_1_s16,0); @@ -173,7 +173,7 @@ void sub_8042A84(s16 param_1, Entity *entity, u32 param_3) if (iVar3 < 0) { iVar3 += 0xff; } - } while (-8 <= (iVar3 >> 8) - gDungeon->cameraPixelPos.y); + } while (-8 <= (iVar3 >> 8) - gDungeon->unk181e8.cameraPixelPos.y); entity->isVisible = 0; sub_804178C(0); } diff --git a/src/code_805D8C8_1.c b/src/code_805D8C8_1.c new file mode 100644 index 000000000..339ba4339 --- /dev/null +++ b/src/code_805D8C8_1.c @@ -0,0 +1,1790 @@ +#include "global.h" +#include "structs/str_dungeon.h" +#include "number_util.h" +#include "input.h" +#include "code_80521D0.h" +#include "dungeon_action.h" +#include "dungeon_ai_targeting.h" +#include "game_options.h" +#include "dungeon_leader.h" +#include "bg_control.h" +#include "items.h" +#include "code_806CD90.h" +#include "dungeon_capabilities.h" + +void sub_806A2BC(Entity *a0, u8 a1); +bool8 sub_805E874(void); +bool8 sub_80701A4(Entity *a0); +void sub_80647F0(Entity *a0); +void sub_805E738(Entity *a0); +void sub_803E708(s32 a0, s32 a1); +void sub_8040A78(void); +void sub_805E804(void); +void sub_8075680(u32); +void sub_8094C88(void); +void sub_8040A84(void); +void sub_8047158(void); +void sub_804AA60(void); +void sub_80532B4(void); +void sub_806A914(u8 a0, u8 a1, u8 a2); +void sub_8044C10(u8 a0); +u16 sub_805F1AC(void); +void sub_80978C8(s16 a0); +void sub_8044C50(u16 a0); +void sub_805E2C4(Entity *a0); +bool8 sub_8094C48(void); +void sub_8052210(u8 a0); +void sub_803E46C(s32 a0); +bool8 sub_805EC4C(Entity *a0, u16 a1); +void sub_803E724(s32 a0); +void HandleTalkFieldAction(Entity *); +bool8 sub_8044B28(void); +bool8 IsNotAttacking(Entity *param_1, bool8 param_2); +void ShowFieldMenu(u8 a0, u8 a1); +bool8 sub_805EF60(Entity *a0, EntityInfo *a1); +s32 GetTeamMemberEntityIndex(Entity *pokemon); + +extern u8 gUnknown_202F22D; +extern u8 gUnknown_202F22C; +extern u8 gUnknown_202F230; +extern u8 gUnknown_202F231; +extern u8 gUnknown_202EE00; +extern u16 gUnknown_202F22E; + +extern const u8 *gUnknown_80F8A84; +extern const u8 *gUnknown_80F8A6C; +extern const u8 *gUnknown_80F8ADC; +extern const u8 *gUnknown_80F8AB0; +extern const u8 *gUnknown_80F8B0C; +extern const u8 *gUnknown_80FD4B0; +extern const u8 *gUnknown_80F8A4C; +extern const u8 *gUnknown_80F8A28; + +#ifdef NONMATCHING + +struct UnkR6Struct { + u8 a0_8; + u8 a0_16; + u8 a0_24; +}; + +void sub_805D8C8(void) +{ + struct UnkR6Struct r6; + s32 i; //r4 + s32 j; // r3 + u32 r7; + s32 r9; + s32 r5; + Entity *leader; // r10 + EntityInfo *leaderInfo; // r8 + u32 buttonsR1, buttonsR2; // r1 r2 + const u8 *msg; // r3 + bool32 r3; + s32 r4; + s32 prevMapOption; // r4 + + // Stack + u8 sp0[5]; + s32 frames; + s32 var_38; + unkDungeonGlobal_unk181E8_sub *unkPtr; + + unkPtr = &gDungeon->unk181e8; + var_38 = 3; + gDungeon->unk12 = 0; + sub_806A2BC(GetLeader(), 1); + if (sub_80701A4(GetLeader())) { + sub_803E708(60, 16); + return; + } + + gDungeon->unk673 = 0; + sub_8040A78(); + if (gDungeon->unk1 != 0) { + gDungeon->unk1 = 0; + if (!ShouldMonsterRunAwayAndShowEffect(GetLeader(), TRUE)) { + sub_8044C10(1); + sub_805E804(); + sub_80647F0(GetLeader()); + ResetRepeatTimers(); + ResetUnusedInputStruct(); + if (sub_805F1AC() != 0) { + return; + } + } + } + + sub_806A914(1, 1, 1); + while (1) { + + leader = GetLeader(); + leaderInfo = leader->info; + + sub_80978C8(leaderInfo->id); + if (gDungeon->unk66C != 0) { + if (sub_805E874() != 0) { + leaderInfo->action.action = 2; + leaderInfo->action.unk4[0].actionUseIndex = 0; + break; + } + sub_805E804(); + } + gUnknown_202F22D = 0; + gUnknown_202F22C = 0; + if (gDungeon->unk5C0 >= 0) { + r6.a0_8 = 1; + } + else { + r6.a0_8 = 0; + } + r6.a0_16 = 0; + r6.a0_24 = 0; + + frames = 0; + sub_8044C50(0); + gUnknown_202F230 = 0; + gUnknown_202F231 = 0; + while (r6.a0_8 == 0) { + bool32 alwaysFalse = FALSE; + + gUnknown_202F22E++; + if (unkPtr->unk1821A != 0) { + frames = 0; + } + else { + frames++; + } + + if (var_38 != 0 && --var_38 == 0) { + sub_8075680(0); + } + + sub_805E2C4(leader); + r7 = 0; + { + s32 i; + for (i = 0; i < 5; i++) { + sp0[i] = 0; + } + } + + if (gRealInputs.held & A_BUTTON && gRealInputs.held & B_BUTTON && RoundUpFixedPoint(leaderInfo->belly) != 0) { + sub_8044C50(1); + gDungeon->unk673 = 1; + break; + } + + r9 = 0; + if (gRealInputs.pressed & A_BUTTON) { + if (gRealInputs.held & B_BUTTON) { + if (RoundUpFixedPoint(leaderInfo->belly) != 0) { + sub_8044C50(1); + gDungeon->unk673 = 1; + break; + } + } + else if (ShouldMonsterRunAwayAndShowEffect(leader, TRUE)) { + SendMessage(leader, gUnknown_80FD4B0); + sub_8044C50(1); + gDungeon->unk673 = 1; + break; + } + else { + if (gRealInputs.held & L_BUTTON) { + register bool32 r7; + + for (i = 0; i < MAX_MON_MOVES; i++) { + if (!(leaderInfo->moves[i].moveFlags & 1)) + continue; + if (leaderInfo->moves[i].moveFlags & 8) + break; + } + if (i == MAX_MON_MOVES) { + SendMessage(leader, gUnknown_80F8A28); + break; + } + + for (j = 0; j < MAX_MON_MOVES; j++) { + + if (!(leaderInfo->moves[j].moveFlags & 1)) + continue; + if (leaderInfo->moves[j].PP != 0) + break; + } + if (j == MAX_MON_MOVES) { + SetMonsterActionFields(&leaderInfo->action, 0x17); + break; + } + + r7 = 0; + for (j = i; j < MAX_MON_MOVES; j++) { + if (j != i && !(leaderInfo->moves[j].moveFlags & 2)) + break; + if (leaderInfo->moves[j].PP != 0) { + r7 = 1; + break; + } + } + if (r7 == 0) { + SendMessage(leader, gUnknown_80F8A4C); + } + else { + SetMonsterActionFields(&leaderInfo->action, 0x14); + leaderInfo->action.unk4[0].actionUseIndex = GetTeamMemberEntityIndex(leader); + leaderInfo->action.unk4[1].actionUseIndex = i; + } + break; + } + else { + if (!sub_805EF60(leader, leaderInfo)) { + SetMonsterActionFields(&leaderInfo->action, 0x32); + } + break; + } + break; + } + } + + if (gRealInputs.shortPress & B_BUTTON) { + r6.a0_8 = 1; + r6.a0_16 = 0; + r6.a0_24 = 0; + break; + } + else if (sp0[1] != 0) { // Opens moves menu + gDungeon->unk5C0 = 0; + r6.a0_8 = 1; + r6.a0_16 = 0; + r6.a0_24 = 1; + break; + } + else if (sp0[2] != 0) { // Opens item menu + gDungeon->unk5C0 = 1; + r6.a0_8 = 1; + r6.a0_16 = 0; + r6.a0_24 = 1; + break; + } + else if (sp0[3] != 0) { // Opens pokemon menu + gDungeon->unk5C0 = 2; + r6.a0_8 = 1; + r6.a0_16 = 0; + r6.a0_24 = 1; + break; + } + else if (sp0[4] != 0) { // Opens regular menu + + r6.a0_8 = 1; + r6.a0_16 = 0; + r6.a0_24 = 1; + break; + } + else if (frames > 0x707) { // Opens simple menu when idling + + r6.a0_8 = 1; + r6.a0_16 = 1; + r6.a0_24 = 0; + break; + } + + r4 = gGameOptionsRef->unk9; + if (r4 == 0) { + + // 0 != 0 comparision here... + if ((gRealInputs.pressed & B_BUTTON || (r7 == 0 && alwaysFalse != FALSE)) && unkPtr->unk1821A != 0) { + sub_804AA60(); + gUnknown_202F22D = r4; + ResetRepeatTimers(); + ResetUnusedInputStruct(); + } + } + if (gRealInputs.held & L_BUTTON) { + if (gRealInputs.pressed & B_BUTTON) { + sub_80532B4(); + ResetRepeatTimers(); + ResetUnusedInputStruct(); + } + } + r4 = 0; + if (gRealInputs.held & R_BUTTON) { + if (gUnknown_202F22C == 0) { + gUnknown_202F22E = 0; + } + gUnknown_202F22C = 1; + } + else { + gUnknown_202F22C = 0; + } + + r3 = FALSE; + if (gGameOptionsRef->unk9 == 0) { + if (gRealInputs.shortPress & R_BUTTON || r9 != 0 || gRealInputs.pressed & START_BUTTON) { + r3 = TRUE; + } + } + if (r3) { + sub_805E738(leader); + gUnknown_202F22D = 1; + unkPtr->unk1821B = leaderInfo->action.direction; + unkPtr->unk1821C = 0xFF; + ResetRepeatTimers(); + } + + if ((gRealInputs.held & L_BUTTON) == L_BUTTON && (gRealInputs.pressed & R_BUTTON) == R_BUTTON) { + r4 = 1; + } + if (sp0[0] != 0) { + r4 = 1; + } + if (r4) { + for (i = 0; i < INVENTORY_SIZE; i++) { + if (!(gTeamInventoryRef->teamItems[i].flags & ITEM_FLAG_EXISTS)) + continue; + if (gTeamInventoryRef->teamItems[i].flags & ITEM_FLAG_SET) { + sub_8044C50(11); + leaderInfo->action.unk4[0].actionUseIndex = i + 1; + leaderInfo->action.unk4[0].lastItemThrowPosition.x = 0; + leaderInfo->action.unk4[0].lastItemThrowPosition.y = 0; + break; + } + } + if (leaderInfo->action.action != 0) { + break; + } + } + + // SELECT button + if (!gDungeon->unk181e8.blinded && gGameOptionsRef->mapOption != 6 && gRealInputs.pressed & SELECT_BUTTON) { + prevMapOption = gGameOptionsRef->mapOption; + gUnknown_202EE00 = 1; + gDungeon->unk181e8.unk18214 = 1; + if (!sub_8094C48()) { + sub_8094C88(); + } + sub_8052210(1); + sub_8040A84(); + SetBGOBJEnableFlags(0x1E); + sub_803E708(0xA, 0x2F); + while (1) { + sub_803E46C(0x2F); + if (gRealInputs.pressed & SELECT_BUTTON) + break; + if (gRealInputs.pressed & B_BUTTON) + break; + + if (gRealInputs.pressed & A_BUTTON) { + gUnknown_202EE00 = (gUnknown_202EE00 == 0) ? 1 : 0; + sub_8040A84(); + } + } + gDungeon->unk181e8.unk18214 = 0; + gGameOptionsRef->mapOption = prevMapOption; + gUnknown_202EE00 = 1; + sub_8040A84(); + SetBGOBJEnableFlags(0); + sub_803E46C(0x2F); + sub_803E46C(0x2F); + } + + if (gDungeon->unk66D != 0 && gUnknown_202F22C == 0) { + buttonsR1 = buttonsR2 = gRealInputs.pressed; + } + else { + buttonsR1 = gRealInputs.held; + buttonsR2 = (unkPtr->unk1821A == 0) ? gRealInputs.held : gRealInputs.pressed; + } + + buttonsR1 &= DPAD_ANY; + buttonsR2 &= DPAD_ANY; + r5 = -1; + if (buttonsR1 == (DPAD_UP | DPAD_RIGHT)) + r5 = 3; + if (buttonsR1 == (DPAD_UP | DPAD_LEFT)) + r5 = 5; + if (buttonsR1 == (DPAD_DOWN | DPAD_RIGHT)) + r5 = 1; + if (buttonsR1 == (DPAD_DOWN | DPAD_LEFT)) + r5 = 7; + + if (buttonsR2 == DPAD_UP) + r5 = 4; + if (buttonsR2 == DPAD_DOWN) + r5 = 0; + if (buttonsR2 == DPAD_RIGHT) + r5 = 2; + if (buttonsR2 == DPAD_LEFT) + r5 = 6; + + if (r5 >= 0 && (gUnknown_202F22C == 0 || (r5 & 1))) { + bool32 aaa = 0; + bool32 register r7 = (leaderInfo->action.direction != r5); + leaderInfo->action.direction = r5 & 7; + if (gUnknown_202F22D != 0) { + unkPtr->unk1821B = r5; + sub_806CDD4(leader, sub_806CEBC(leader), r5); + } + else { + + r4 = 0; + + msg = NULL; + if (sub_805EC4C(leader, 1)) + break; + + if (leaderInfo->immobilize.immobilizeStatus == 2) { + msg = gUnknown_80F8A84, r4 = 1; + } + else if (leaderInfo->immobilize.immobilizeStatus == 7) { + msg = gUnknown_80F8A6C, r4 = 1; + } + else if (leaderInfo->immobilize.immobilizeStatus == 5) { + msg = gUnknown_80F8AB0, r4 = 1; + } + else if (leaderInfo->immobilize.immobilizeStatus == 3) { + msg = gUnknown_80F8ADC, r4 = 1; + } + else if (leaderInfo->immobilize.immobilizeStatus == 4) { + msg = gUnknown_80F8B0C, r4 = 1; + } + if (!CanMoveInDirection(leader, r5)) + r4 |= 2; + + if (r7) { + sub_806CDD4(leader, sub_806CEBC(leader), r5); + } + // Note to self: r7 is set to 2, but I guess it's because the variable is not used anymore? + //r7 = 2; + if (!(r4 & 2)) { + + //r9 = 1; + if (r4 & 1) { + if (msg != NULL) { + SendMessage(leader, msg); + } + sub_8044C50(1); + gDungeon->unk673 = 1; // or r9? + break; + } + sub_8044C50(2); + + // mov r0, cmp r0, #0 wtf + if ((gRealInputs.held & B_BUTTON || aaa != 0) && RoundUpFixedPoint(leaderInfo->belly) != 0) { + if (leader->info->volatileStatus.volatileStatus != 2) { + gDungeon->unk66C = 1; // or r9? + } + leaderInfo->action.unk4[0].actionUseIndex = 0; + break; + } + leaderInfo->action.unk4[0].actionUseIndex = 1; + break; + } + + if (r4 & 1) + sub_803E724(0x23); + } + } + + sub_803E46C(0xF); + } + + if (unkPtr->unk1821A != 0) { + sub_804AA60(); + } + + if (leaderInfo->action.action == 0x2D || leaderInfo->action.action == 0x13) { + HandleTalkFieldAction(leader); + if (sub_8044B28()) + break; + sub_8044C50(0); + } + else if ((r6.a0_8) == 0) { + gDungeon->unk66D = 0; + if (leaderInfo->action.action != 0) { + if (!IsNotAttacking(leader, FALSE)) { + sub_803E46C(0xF); + } + break; + } + sub_803E46C(0xF); + } + else { + u8 r2; + sub_803E46C(0xF); + sub_8047158(); + r2 = (r6.a0_16 == 0) ? 1 : 0; + ShowFieldMenu(r2, r6.a0_24); + ResetRepeatTimers(); + ResetUnusedInputStruct(); + gUnknown_202F22D = 0; + unkPtr->unk1821A = 0; + sub_804AA60(); + if (sub_8044B28()) + break; + if (leaderInfo->action.action != 0) { + if (leaderInfo->action.action == 0x2B) { + gDungeon->unk4 = 1; + gDungeon->unk3 = 1; + } + if (leaderInfo->action.action == 0x2E) { + gDungeon->unk4 = 1; + gDungeon->unk3 = 0; + } + break; + } + sub_803E46C(0xF); + if (gDungeon->unk4 != 0) + break; + } + } +} + +#else +NAKED void sub_805D8C8(void) +{ + asm_unified("push {r4-r7,lr}\n" +"mov r7, r10\n" +"mov r6, r9\n" +"mov r5, r8\n" +"push {r5-r7}\n" +"sub sp, 0x24\n" +"ldr r4, _0805D90C\n" +"ldr r1, [r4]\n" +"ldr r0, _0805D910\n" +"adds r0, r1, r0\n" +"str r0, [sp, 0x10]\n" +"movs r2, 0x3\n" +"str r2, [sp, 0xC]\n" +"movs r5, 0\n" +"movs r0, 0\n" +"strh r0, [r1, 0x12]\n" +"bl GetLeader\n" +"movs r1, 0x1\n" +"bl sub_806A2BC\n" +"bl GetLeader\n" +"bl sub_80701A4\n" +"lsls r0, 24\n" +"cmp r0, 0\n" +"beq _0805D928\n" +"movs r0, 0x3C\n" +"movs r1, 0x10\n" +"bl sub_803E708\n" +"bl _0805E2B0\n" +".align 2, 0\n" +"_0805D90C: .4byte gDungeon\n" +"_0805D910: .4byte 0x000181e8\n" +"_0805D914:\n" +"mov r1, r8\n" +"adds r1, 0x44\n" +"movs r2, 0\n" +"movs r0, 0x2\n" +"strh r0, [r1]\n" +"mov r0, r8\n" +"adds r0, 0x48\n" +"strb r2, [r0]\n" +"bl _0805E2B0\n" +"_0805D928:\n" +"ldr r0, [r4]\n" +"ldr r3, _0805D9D4\n" +"adds r0, r3\n" +"strb r5, [r0]\n" +"bl sub_8040A78\n" +"ldr r1, [r4]\n" +"ldrb r0, [r1, 0x1]\n" +"cmp r0, 0\n" +"beq _0805D976\n" +"strb r5, [r1, 0x1]\n" +"bl GetLeader\n" +"movs r1, 0x1\n" +"bl ShouldMonsterRunAwayAndShowEffect\n" +"lsls r0, 24\n" +"cmp r0, 0\n" +"bne _0805D976\n" +"movs r0, 0x1\n" +"bl sub_8044C10\n" +"bl sub_805E804\n" +"bl GetLeader\n" +"bl sub_80647F0\n" +"bl ResetRepeatTimers\n" +"bl ResetUnusedInputStruct\n" +"bl sub_805F1AC\n" +"lsls r0, 16\n" +"cmp r0, 0\n" +"beq _0805D976\n" +"bl _0805E2B0\n" +"_0805D976:\n" +"movs r0, 0x1\n" +"movs r1, 0x1\n" +"movs r2, 0x1\n" +"bl sub_806A914\n" +"_0805D980:\n" +"bl GetLeader\n" +"mov r10, r0\n" +"ldr r5, [r0, 0x70]\n" +"mov r8, r5\n" +"movs r1, 0x2\n" +"ldrsh r0, [r5, r1]\n" +"bl sub_80978C8\n" +"ldr r2, _0805D9D8\n" +"ldr r0, [r2]\n" +"ldr r3, _0805D9DC\n" +"adds r0, r3\n" +"ldrb r0, [r0]\n" +"cmp r0, 0\n" +"beq _0805D9AE\n" +"bl sub_805E874\n" +"lsls r0, 24\n" +"cmp r0, 0\n" +"bne _0805D914\n" +"bl sub_805E804\n" +"_0805D9AE:\n" +"ldr r0, _0805D9E0\n" +"movs r1, 0\n" +"strb r1, [r0]\n" +"ldr r0, _0805D9E4\n" +"strb r1, [r0]\n" +"ldr r5, _0805D9D8\n" +"ldr r0, [r5]\n" +"movs r1, 0xB8\n" +"lsls r1, 3\n" +"adds r0, r1\n" +"ldr r0, [r0]\n" +"cmp r0, 0\n" +"bge _0805D9CA\n" +"b _0805DAE8\n" +"_0805D9CA:\n" +"ldr r0, _0805D9E8\n" +"ands r6, r0\n" +"movs r2, 0x1\n" +"orrs r6, r2\n" +"b _0805DAEC\n" +".align 2, 0\n" +"_0805D9D4: .4byte 0x00000673\n" +"_0805D9D8: .4byte gDungeon\n" +"_0805D9DC: .4byte 0x0000066c\n" +"_0805D9E0: .4byte gUnknown_202F22D\n" +"_0805D9E4: .4byte gUnknown_202F22C\n" +"_0805D9E8: .4byte 0xffffff00\n" +"_0805D9EC:\n" +"movs r0, 0x1\n" +"bl sub_8044C50\n" +"ldr r3, _0805DA00\n" +"ldr r0, [r3]\n" +"ldr r5, _0805DA04\n" +"adds r0, r5\n" +"strb r4, [r0]\n" +"b _0805E1AE\n" +".align 2, 0\n" +"_0805DA00: .4byte gDungeon\n" +"_0805DA04: .4byte 0x00000673\n" +"_0805DA08:\n" +"ldr r0, _0805DA14\n" +"ldr r1, [r0]\n" +"mov r0, r10\n" +"bl SendMessage\n" +"b _0805DBDA\n" +".align 2, 0\n" +"_0805DA14: .4byte gUnknown_80FD4B0\n" +"_0805DA18:\n" +"ldr r0, _0805DA1C\n" +"b _0805DCBC\n" +".align 2, 0\n" +"_0805DA1C: .4byte gUnknown_80F8A28\n" +"_0805DA20:\n" +"ldr r0, [sp, 0x1C]\n" +"movs r1, 0x17\n" +"bl SetMonsterActionFields\n" +"b _0805E1AE\n" +"_0805DA2A:\n" +"ldr r0, _0805DA38\n" +"ands r6, r0\n" +"movs r3, 0x1\n" +"orrs r6, r3\n" +"ldr r0, _0805DA3C\n" +"ands r6, r0\n" +"b _0805DAD6\n" +".align 2, 0\n" +"_0805DA38: .4byte 0xffffff00\n" +"_0805DA3C: .4byte 0xffff00ff\n" +"_0805DA40:\n" +"ldr r5, _0805DA58\n" +"ldr r0, [r5]\n" +"movs r2, 0xB8\n" +"lsls r2, 3\n" +"adds r0, r2\n" +"str r1, [r0]\n" +"ldr r0, _0805DA5C\n" +"ands r6, r0\n" +"movs r3, 0x1\n" +"orrs r6, r3\n" +"b _0805DAA8\n" +".align 2, 0\n" +"_0805DA58: .4byte gDungeon\n" +"_0805DA5C: .4byte 0xffffff00\n" +"_0805DA60:\n" +"ldr r5, _0805DA78\n" +"ldr r0, [r5]\n" +"movs r1, 0xB8\n" +"lsls r1, 3\n" +"adds r0, r1\n" +"movs r2, 0x1\n" +"str r2, [r0]\n" +"ldr r0, _0805DA7C\n" +"ands r6, r0\n" +"orrs r6, r2\n" +"b _0805DAA8\n" +".align 2, 0\n" +"_0805DA78: .4byte gDungeon\n" +"_0805DA7C: .4byte 0xffffff00\n" +"_0805DA80:\n" +"ldr r3, _0805DA98\n" +"ldr r0, [r3]\n" +"movs r5, 0xB8\n" +"lsls r5, 3\n" +"adds r0, r5\n" +"str r2, [r0]\n" +"ldr r0, _0805DA9C\n" +"ands r6, r0\n" +"movs r0, 0x1\n" +"orrs r6, r0\n" +"b _0805DAA8\n" +".align 2, 0\n" +"_0805DA98: .4byte gDungeon\n" +"_0805DA9C: .4byte 0xffffff00\n" +"_0805DAA0:\n" +"ldr r0, _0805DAB8\n" +"ands r6, r0\n" +"movs r1, 0x1\n" +"orrs r6, r1\n" +"_0805DAA8:\n" +"ldr r0, _0805DABC\n" +"ands r6, r0\n" +"ldr r0, _0805DAC0\n" +"ands r6, r0\n" +"movs r0, 0x80\n" +"lsls r0, 9\n" +"orrs r6, r0\n" +"b _0805E1AE\n" +".align 2, 0\n" +"_0805DAB8: .4byte 0xffffff00\n" +"_0805DABC: .4byte 0xffff00ff\n" +"_0805DAC0: .4byte 0xff00ffff\n" +"_0805DAC4:\n" +"ldr r0, _0805DADC\n" +"ands r6, r0\n" +"movs r2, 0x1\n" +"orrs r6, r2\n" +"ldr r0, _0805DAE0\n" +"ands r6, r0\n" +"movs r0, 0x80\n" +"lsls r0, 1\n" +"orrs r6, r0\n" +"_0805DAD6:\n" +"ldr r0, _0805DAE4\n" +"ands r6, r0\n" +"b _0805E1AE\n" +".align 2, 0\n" +"_0805DADC: .4byte 0xffffff00\n" +"_0805DAE0: .4byte 0xffff00ff\n" +"_0805DAE4: .4byte 0xff00ffff\n" +"_0805DAE8:\n" +"ldr r0, _0805DB3C\n" +"ands r6, r0\n" +"_0805DAEC:\n" +"ldr r0, _0805DB40\n" +"ands r6, r0\n" +"ldr r0, _0805DB44\n" +"ands r6, r0\n" +"movs r3, 0\n" +"str r3, [sp, 0x8]\n" +"movs r0, 0\n" +"bl sub_8044C50\n" +"ldr r0, _0805DB48\n" +"mov r5, sp\n" +"ldrb r5, [r5, 0x8]\n" +"strb r5, [r0]\n" +"ldr r0, _0805DB4C\n" +"mov r1, sp\n" +"ldrb r1, [r1, 0x8]\n" +"strb r1, [r0]\n" +"lsls r0, r6, 24\n" +"mov r2, r8\n" +"adds r2, 0x44\n" +"str r2, [sp, 0x1C]\n" +"str r0, [sp, 0x14]\n" +"ldr r3, [sp, 0x10]\n" +"adds r3, 0x32\n" +"str r3, [sp, 0x18]\n" +"cmp r0, 0\n" +"beq _0805DB24\n" +"b _0805E1AE\n" +"_0805DB24:\n" +"ldr r0, _0805DB50\n" +"ldrh r1, [r0]\n" +"adds r1, 0x1\n" +"strh r1, [r0]\n" +"ldr r5, [sp, 0x18]\n" +"ldrb r0, [r5]\n" +"cmp r0, 0\n" +"beq _0805DB54\n" +"movs r0, 0\n" +"str r0, [sp, 0x8]\n" +"b _0805DB5A\n" +".align 2, 0\n" +"_0805DB3C: .4byte 0xffffff00\n" +"_0805DB40: .4byte 0xffff00ff\n" +"_0805DB44: .4byte 0xff00ffff\n" +"_0805DB48: .4byte gUnknown_202F230\n" +"_0805DB4C: .4byte gUnknown_202F231\n" +"_0805DB50: .4byte gUnknown_202F22E\n" +"_0805DB54:\n" +"ldr r1, [sp, 0x8]\n" +"adds r1, 0x1\n" +"str r1, [sp, 0x8]\n" +"_0805DB5A:\n" +"ldr r2, [sp, 0xC]\n" +"cmp r2, 0\n" +"beq _0805DB6E\n" +"subs r2, 0x1\n" +"str r2, [sp, 0xC]\n" +"cmp r2, 0\n" +"bne _0805DB6E\n" +"movs r0, 0\n" +"bl sub_8075680\n" +"_0805DB6E:\n" +"mov r0, r10\n" +"bl sub_805E2C4\n" +"movs r7, 0\n" +"movs r1, 0\n" +"add r0, sp, 0x4\n" +"_0805DB7A:\n" +"strb r1, [r0]\n" +"subs r0, 0x1\n" +"cmp r0, sp\n" +"bge _0805DB7A\n" +"ldr r0, _0805DBEC\n" +"ldrh r1, [r0]\n" +"movs r4, 0x1\n" +"movs r0, 0x1\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"beq _0805DBAA\n" +"movs r0, 0x2\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"beq _0805DBAA\n" +"movs r0, 0x9E\n" +"lsls r0, 1\n" +"add r0, r8\n" +"ldr r0, [r0]\n" +"bl RoundUpFixedPoint\n" +"cmp r0, 0\n" +"beq _0805DBAA\n" +"b _0805D9EC\n" +"_0805DBAA:\n" +"movs r3, 0\n" +"mov r9, r3\n" +"ldr r4, _0805DBEC\n" +"ldrh r1, [r4, 0x2]\n" +"movs r5, 0x1\n" +"movs r0, 0x1\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"bne _0805DBBE\n" +"b _0805DD02\n" +"_0805DBBE:\n" +"ldrh r1, [r4]\n" +"movs r0, 0x2\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"beq _0805DBF8\n" +"movs r0, 0x9E\n" +"lsls r0, 1\n" +"add r0, r8\n" +"ldr r0, [r0]\n" +"bl RoundUpFixedPoint\n" +"cmp r0, 0\n" +"bne _0805DBDA\n" +"b _0805DD02\n" +"_0805DBDA:\n" +"movs r0, 0x1\n" +"bl sub_8044C50\n" +"ldr r1, _0805DBF0\n" +"ldr r0, [r1]\n" +"ldr r2, _0805DBF4\n" +"adds r0, r2\n" +"strb r5, [r0]\n" +"b _0805E1AE\n" +".align 2, 0\n" +"_0805DBEC: .4byte gRealInputs\n" +"_0805DBF0: .4byte gDungeon\n" +"_0805DBF4: .4byte 0x00000673\n" +"_0805DBF8:\n" +"mov r0, r10\n" +"movs r1, 0x1\n" +"bl ShouldMonsterRunAwayAndShowEffect\n" +"lsls r0, 24\n" +"cmp r0, 0\n" +"beq _0805DC08\n" +"b _0805DA08\n" +"_0805DC08:\n" +"ldrh r0, [r4]\n" +"movs r3, 0x80\n" +"lsls r3, 2\n" +"adds r1, r3, 0\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"beq _0805DCE8\n" +"movs r4, 0\n" +"movs r2, 0x8C\n" +"lsls r2, 1\n" +"add r2, r8\n" +"movs r3, 0x8\n" +"_0805DC20:\n" +"ldrb r1, [r2]\n" +"movs r0, 0x1\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"beq _0805DC32\n" +"adds r0, r3, 0\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"bne _0805DC3A\n" +"_0805DC32:\n" +"adds r2, 0x8\n" +"adds r4, 0x1\n" +"cmp r4, 0x3\n" +"ble _0805DC20\n" +"_0805DC3A:\n" +"cmp r4, 0x4\n" +"bne _0805DC40\n" +"b _0805DA18\n" +"_0805DC40:\n" +"movs r3, 0\n" +"movs r5, 0x8C\n" +"lsls r5, 1\n" +"movs r7, 0x1\n" +"mov r2, r8\n" +"_0805DC4A:\n" +"lsls r0, r3, 3\n" +"add r0, r8\n" +"adds r0, r5\n" +"ldrb r1, [r0]\n" +"adds r0, r7, 0\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"beq _0805DC66\n" +"movs r1, 0x8E\n" +"lsls r1, 1\n" +"adds r0, r2, r1\n" +"ldrb r0, [r0]\n" +"cmp r0, 0\n" +"bne _0805DC6E\n" +"_0805DC66:\n" +"adds r2, 0x8\n" +"adds r3, 0x1\n" +"cmp r3, 0x3\n" +"ble _0805DC4A\n" +"_0805DC6E:\n" +"cmp r3, 0x4\n" +"bne _0805DC74\n" +"b _0805DA20\n" +"_0805DC74:\n" +"movs r7, 0\n" +"adds r3, r4, 0\n" +"cmp r4, 0x3\n" +"bgt _0805DCB6\n" +"lsls r0, r4, 3\n" +"adds r2, r0, 0\n" +"add r2, r8\n" +"mov r12, r2\n" +"movs r5, 0x8E\n" +"lsls r5, 1\n" +"adds r0, r5\n" +"mov r1, r8\n" +"adds r2, r0, r1\n" +"movs r5, 0x2\n" +"_0805DC90:\n" +"ldrb r0, [r2]\n" +"cmp r0, 0\n" +"bne _0805DCCC\n" +"movs r0, 0x8\n" +"add r12, r0\n" +"adds r2, 0x8\n" +"adds r3, 0x1\n" +"cmp r3, 0x3\n" +"bgt _0805DCB6\n" +"cmp r3, r4\n" +"beq _0805DC90\n" +"movs r0, 0x8C\n" +"lsls r0, 1\n" +"add r0, r12\n" +"ldrb r1, [r0]\n" +"adds r0, r5, 0\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"bne _0805DC90\n" +"_0805DCB6:\n" +"cmp r7, 0\n" +"bne _0805DCCC\n" +"ldr r0, _0805DCC8\n" +"_0805DCBC:\n" +"ldr r1, [r0]\n" +"mov r0, r10\n" +"bl SendMessage\n" +"b _0805E1AE\n" +".align 2, 0\n" +"_0805DCC8: .4byte gUnknown_80F8A4C\n" +"_0805DCCC:\n" +"ldr r0, [sp, 0x1C]\n" +"movs r1, 0x14\n" +"bl SetMonsterActionFields\n" +"mov r0, r10\n" +"bl GetTeamMemberEntityIndex\n" +"mov r1, r8\n" +"adds r1, 0x48\n" +"strb r0, [r1]\n" +"mov r0, r8\n" +"adds r0, 0x50\n" +"strb r4, [r0]\n" +"b _0805E1AE\n" +"_0805DCE8:\n" +"mov r0, r10\n" +"mov r1, r8\n" +"bl sub_805EF60\n" +"lsls r0, 24\n" +"cmp r0, 0\n" +"beq _0805DCF8\n" +"b _0805E1AE\n" +"_0805DCF8:\n" +"ldr r0, [sp, 0x1C]\n" +"movs r1, 0x32\n" +"bl SetMonsterActionFields\n" +"b _0805E1AE\n" +"_0805DD02:\n" +"ldr r3, _0805DDC8\n" +"ldrh r1, [r3, 0x6]\n" +"movs r2, 0x2\n" +"adds r0, r2, 0\n" +"ands r0, r1\n" +"lsls r0, 16\n" +"lsrs r1, r0, 16\n" +"cmp r1, 0\n" +"beq _0805DD16\n" +"b _0805DA2A\n" +"_0805DD16:\n" +"mov r0, sp\n" +"ldrb r0, [r0, 0x1]\n" +"cmp r0, 0\n" +"beq _0805DD20\n" +"b _0805DA40\n" +"_0805DD20:\n" +"mov r0, sp\n" +"ldrb r0, [r0, 0x2]\n" +"cmp r0, 0\n" +"beq _0805DD2A\n" +"b _0805DA60\n" +"_0805DD2A:\n" +"mov r0, sp\n" +"ldrb r0, [r0, 0x3]\n" +"cmp r0, 0\n" +"beq _0805DD34\n" +"b _0805DA80\n" +"_0805DD34:\n" +"mov r0, sp\n" +"ldrb r0, [r0, 0x4]\n" +"cmp r0, 0\n" +"beq _0805DD3E\n" +"b _0805DAA0\n" +"_0805DD3E:\n" +"ldr r0, _0805DDCC\n" +"ldr r1, [sp, 0x8]\n" +"cmp r1, r0\n" +"ble _0805DD48\n" +"b _0805DAC4\n" +"_0805DD48:\n" +"ldr r0, _0805DDD0\n" +"ldr r0, [r0]\n" +"ldrb r4, [r0, 0x9]\n" +"cmp r4, 0\n" +"bne _0805DD7E\n" +"ldrh r1, [r3, 0x2]\n" +"adds r0, r2, 0\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"bne _0805DD66\n" +"cmp r7, 0\n" +"bne _0805DD7E\n" +"movs r2, 0\n" +"cmp r2, 0\n" +"beq _0805DD7E\n" +"_0805DD66:\n" +"ldr r3, [sp, 0x18]\n" +"ldrb r0, [r3]\n" +"cmp r0, 0\n" +"beq _0805DD7E\n" +"bl sub_804AA60\n" +"ldr r0, _0805DDD4\n" +"strb r4, [r0]\n" +"bl ResetRepeatTimers\n" +"bl ResetUnusedInputStruct\n" +"_0805DD7E:\n" +"ldr r2, _0805DDC8\n" +"ldrh r0, [r2]\n" +"movs r5, 0x80\n" +"lsls r5, 2\n" +"adds r1, r5, 0\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"beq _0805DDA4\n" +"ldrh r1, [r2, 0x2]\n" +"movs r0, 0x2\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"beq _0805DDA4\n" +"bl sub_80532B4\n" +"bl ResetRepeatTimers\n" +"bl ResetUnusedInputStruct\n" +"_0805DDA4:\n" +"movs r4, 0\n" +"ldr r0, _0805DDC8\n" +"ldrh r0, [r0]\n" +"movs r2, 0x80\n" +"lsls r2, 1\n" +"adds r1, r2, 0\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"beq _0805DDFA\n" +"ldr r1, _0805DDD8\n" +"ldrb r0, [r1]\n" +"cmp r0, 0\n" +"bne _0805DDC2\n" +"ldr r0, _0805DDDC\n" +"strh r4, [r0]\n" +"_0805DDC2:\n" +"movs r3, 0x1\n" +"strb r3, [r1]\n" +"b _0805DDFE\n" +".align 2, 0\n" +"_0805DDC8: .4byte gRealInputs\n" +"_0805DDCC: .4byte 0x00000707\n" +"_0805DDD0: .4byte gGameOptionsRef\n" +"_0805DDD4: .4byte gUnknown_202F22D\n" +"_0805DDD8: .4byte gUnknown_202F22C\n" +"_0805DDDC: .4byte gUnknown_202F22E\n" +"_0805DDE0:\n" +"movs r0, 0xB\n" +"bl sub_8044C50\n" +"adds r2, r4, 0x1\n" +"mov r0, r8\n" +"adds r0, 0x48\n" +"movs r1, 0\n" +"strb r2, [r0]\n" +"adds r0, 0x4\n" +"strh r1, [r0]\n" +"adds r0, 0x2\n" +"strh r1, [r0]\n" +"b _0805DE92\n" +"_0805DDFA:\n" +"ldr r0, _0805DEF8\n" +"strb r4, [r0]\n" +"_0805DDFE:\n" +"movs r3, 0\n" +"ldr r0, _0805DEFC\n" +"ldr r0, [r0]\n" +"ldrb r0, [r0, 0x9]\n" +"cmp r0, 0\n" +"bne _0805DE2C\n" +"ldr r2, _0805DF00\n" +"ldrh r0, [r2, 0x6]\n" +"movs r5, 0x80\n" +"lsls r5, 1\n" +"adds r1, r5, 0\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"bne _0805DE2A\n" +"mov r0, r9\n" +"cmp r0, 0\n" +"bne _0805DE2A\n" +"ldrh r1, [r2, 0x2]\n" +"movs r0, 0x8\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"beq _0805DE2C\n" +"_0805DE2A:\n" +"movs r3, 0x1\n" +"_0805DE2C:\n" +"cmp r3, 0\n" +"beq _0805DE54\n" +"mov r0, r10\n" +"bl sub_805E738\n" +"ldr r0, _0805DF04\n" +"movs r1, 0x1\n" +"strb r1, [r0]\n" +"mov r0, r8\n" +"adds r0, 0x46\n" +"ldrb r0, [r0]\n" +"ldr r1, [sp, 0x10]\n" +"adds r1, 0x33\n" +"strb r0, [r1]\n" +"ldr r1, [sp, 0x10]\n" +"adds r1, 0x34\n" +"movs r0, 0xFF\n" +"strb r0, [r1]\n" +"bl ResetRepeatTimers\n" +"_0805DE54:\n" +"ldr r0, _0805DF00\n" +"ldr r1, [r0]\n" +"ldr r0, _0805DF08\n" +"ands r1, r0\n" +"cmp r1, r0\n" +"bne _0805DE62\n" +"movs r4, 0x1\n" +"_0805DE62:\n" +"mov r0, sp\n" +"ldrb r0, [r0]\n" +"cmp r0, 0\n" +"beq _0805DE6C\n" +"movs r4, 0x1\n" +"_0805DE6C:\n" +"cmp r4, 0\n" +"beq _0805DE9C\n" +"movs r4, 0\n" +"ldr r0, _0805DF0C\n" +"ldr r2, [r0]\n" +"movs r3, 0x10\n" +"_0805DE78:\n" +"ldrb r1, [r2]\n" +"movs r0, 0x1\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"beq _0805DE8A\n" +"adds r0, r3, 0\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"bne _0805DDE0\n" +"_0805DE8A:\n" +"adds r2, 0x4\n" +"adds r4, 0x1\n" +"cmp r4, 0x13\n" +"ble _0805DE78\n" +"_0805DE92:\n" +"ldr r2, [sp, 0x1C]\n" +"ldrh r0, [r2]\n" +"cmp r0, 0\n" +"beq _0805DE9C\n" +"b _0805E1AE\n" +"_0805DE9C:\n" +"ldr r5, _0805DF10\n" +"ldr r3, [r5]\n" +"ldr r1, _0805DF14\n" +"adds r0, r3, r1\n" +"ldrb r0, [r0]\n" +"cmp r0, 0\n" +"bne _0805DF82\n" +"ldr r0, _0805DEFC\n" +"ldr r2, [r0]\n" +"ldrb r0, [r2, 0x4]\n" +"cmp r0, 0x6\n" +"beq _0805DF82\n" +"ldr r0, _0805DF00\n" +"ldrh r1, [r0, 0x2]\n" +"movs r0, 0x4\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"beq _0805DF82\n" +"ldrb r4, [r2, 0x4]\n" +"ldr r0, _0805DF18\n" +"movs r2, 0x1\n" +"strb r2, [r0]\n" +"ldr r5, _0805DF1C\n" +"adds r0, r3, r5\n" +"strb r2, [r0]\n" +"bl sub_8094C48\n" +"lsls r0, 24\n" +"cmp r0, 0\n" +"bne _0805DEDC\n" +"bl sub_8094C88\n" +"_0805DEDC:\n" +"movs r0, 0x1\n" +"bl sub_8052210\n" +"bl sub_8040A84\n" +"movs r0, 0x1E\n" +"bl SetBGOBJEnableFlags\n" +"movs r0, 0xA\n" +"movs r1, 0x2F\n" +"bl sub_803E708\n" +"b _0805DF3A\n" +".align 2, 0\n" +"_0805DEF8: .4byte gUnknown_202F22C\n" +"_0805DEFC: .4byte gGameOptionsRef\n" +"_0805DF00: .4byte gRealInputs\n" +"_0805DF04: .4byte gUnknown_202F22D\n" +"_0805DF08: .4byte 0x01000200\n" +"_0805DF0C: .4byte gTeamInventoryRef\n" +"_0805DF10: .4byte gDungeon\n" +"_0805DF14: .4byte 0x0001820a\n" +"_0805DF18: .4byte gUnknown_202EE00\n" +"_0805DF1C: .4byte 0x00018214\n" +"_0805DF20:\n" +"movs r0, 0x1\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"beq _0805DF3A\n" +"ldr r2, _0805DFA0\n" +"movs r1, 0\n" +"ldrb r0, [r2]\n" +"cmp r0, 0\n" +"bne _0805DF34\n" +"movs r1, 0x1\n" +"_0805DF34:\n" +"strb r1, [r2]\n" +"bl sub_8040A84\n" +"_0805DF3A:\n" +"movs r0, 0x2F\n" +"bl sub_803E46C\n" +"ldr r0, _0805DFA4\n" +"ldrh r1, [r0, 0x2]\n" +"movs r0, 0x4\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"bne _0805DF54\n" +"movs r0, 0x2\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"beq _0805DF20\n" +"_0805DF54:\n" +"ldr r1, _0805DFA8\n" +"ldr r0, [r1]\n" +"ldr r2, _0805DFAC\n" +"adds r0, r2\n" +"movs r1, 0\n" +"strb r1, [r0]\n" +"ldr r0, _0805DFB0\n" +"ldr r0, [r0]\n" +"strb r4, [r0, 0x4]\n" +"ldr r0, _0805DFA0\n" +"movs r3, 0x1\n" +"strb r3, [r0]\n" +"bl sub_8040A84\n" +"movs r0, 0\n" +"bl SetBGOBJEnableFlags\n" +"movs r0, 0x2F\n" +"bl sub_803E46C\n" +"movs r0, 0x2F\n" +"bl sub_803E46C\n" +"_0805DF82:\n" +"ldr r5, _0805DFA8\n" +"ldr r0, [r5]\n" +"ldr r1, _0805DFB4\n" +"adds r0, r1\n" +"ldrb r0, [r0]\n" +"cmp r0, 0\n" +"beq _0805DFBC\n" +"ldr r0, _0805DFB8\n" +"ldrb r0, [r0]\n" +"cmp r0, 0\n" +"bne _0805DFBC\n" +"ldr r0, _0805DFA4\n" +"ldrh r2, [r0, 0x2]\n" +"adds r1, r2, 0\n" +"b _0805DFCC\n" +".align 2, 0\n" +"_0805DFA0: .4byte gUnknown_202EE00\n" +"_0805DFA4: .4byte gRealInputs\n" +"_0805DFA8: .4byte gDungeon\n" +"_0805DFAC: .4byte 0x00018214\n" +"_0805DFB0: .4byte gGameOptionsRef\n" +"_0805DFB4: .4byte 0x0000066d\n" +"_0805DFB8: .4byte gUnknown_202F22C\n" +"_0805DFBC:\n" +"ldr r3, _0805E05C\n" +"ldrh r1, [r3]\n" +"ldr r2, [sp, 0x18]\n" +"ldrb r0, [r2]\n" +"adds r2, r1, 0\n" +"cmp r0, 0\n" +"beq _0805DFCC\n" +"ldrh r2, [r3, 0x2]\n" +"_0805DFCC:\n" +"movs r0, 0xF0\n" +"ands r1, r0\n" +"ands r2, r0\n" +"movs r5, 0x1\n" +"negs r5, r5\n" +"cmp r1, 0x50\n" +"bne _0805DFDC\n" +"movs r5, 0x3\n" +"_0805DFDC:\n" +"cmp r1, 0x60\n" +"bne _0805DFE2\n" +"movs r5, 0x5\n" +"_0805DFE2:\n" +"cmp r1, 0x90\n" +"bne _0805DFE8\n" +"movs r5, 0x1\n" +"_0805DFE8:\n" +"cmp r1, 0xA0\n" +"bne _0805DFEE\n" +"movs r5, 0x7\n" +"_0805DFEE:\n" +"cmp r2, 0x40\n" +"bne _0805DFF4\n" +"movs r5, 0x4\n" +"_0805DFF4:\n" +"cmp r2, 0x80\n" +"bne _0805DFFA\n" +"movs r5, 0\n" +"_0805DFFA:\n" +"cmp r2, 0x10\n" +"bne _0805E000\n" +"movs r5, 0x2\n" +"_0805E000:\n" +"cmp r2, 0x20\n" +"bne _0805E006\n" +"movs r5, 0x6\n" +"_0805E006:\n" +"cmp r5, 0\n" +"bge _0805E00C\n" +"b _0805E1A0\n" +"_0805E00C:\n" +"ldr r0, _0805E060\n" +"ldrb r0, [r0]\n" +"cmp r0, 0\n" +"beq _0805E020\n" +"adds r0, r5, 0\n" +"movs r3, 0x1\n" +"ands r0, r3\n" +"cmp r0, 0\n" +"bne _0805E020\n" +"b _0805E1A0\n" +"_0805E020:\n" +"mov r2, r8\n" +"adds r2, 0x46\n" +"ldrb r1, [r2]\n" +"eors r1, r5\n" +"negs r0, r1\n" +"orrs r0, r1\n" +"lsrs r7, r0, 31\n" +"movs r1, 0x7\n" +"adds r0, r5, 0\n" +"ands r0, r1\n" +"strb r0, [r2]\n" +"ldr r0, _0805E064\n" +"ldrb r0, [r0]\n" +"cmp r0, 0\n" +"beq _0805E068\n" +"ldr r0, [sp, 0x10]\n" +"adds r0, 0x33\n" +"strb r5, [r0]\n" +"mov r0, r10\n" +"bl sub_806CEBC\n" +"adds r1, r0, 0\n" +"lsls r1, 24\n" +"lsrs r1, 24\n" +"mov r0, r10\n" +"adds r2, r5, 0\n" +"bl sub_806CDD4\n" +"b _0805E1A0\n" +".align 2, 0\n" +"_0805E05C: .4byte gRealInputs\n" +"_0805E060: .4byte gUnknown_202F22C\n" +"_0805E064: .4byte gUnknown_202F22D\n" +"_0805E068:\n" +"movs r4, 0\n" +"movs r3, 0\n" +"mov r0, r10\n" +"movs r1, 0x1\n" +"str r3, [sp, 0x20]\n" +"bl sub_805EC4C\n" +"lsls r0, 24\n" +"ldr r3, [sp, 0x20]\n" +"cmp r0, 0\n" +"beq _0805E080\n" +"b _0805E1AE\n" +"_0805E080:\n" +"mov r0, r8\n" +"adds r0, 0xB0\n" +"ldrb r0, [r0]\n" +"cmp r0, 0x2\n" +"bne _0805E094\n" +"ldr r0, _0805E090\n" +"b _0805E0BE\n" +".align 2, 0\n" +"_0805E090: .4byte gUnknown_80F8A84\n" +"_0805E094:\n" +"cmp r0, 0x7\n" +"bne _0805E0A0\n" +"ldr r0, _0805E09C\n" +"b _0805E0BE\n" +".align 2, 0\n" +"_0805E09C: .4byte gUnknown_80F8A6C\n" +"_0805E0A0:\n" +"cmp r0, 0x5\n" +"bne _0805E0AC\n" +"ldr r0, _0805E0A8\n" +"b _0805E0BE\n" +".align 2, 0\n" +"_0805E0A8: .4byte gUnknown_80F8AB0\n" +"_0805E0AC:\n" +"cmp r0, 0x3\n" +"bne _0805E0B8\n" +"ldr r0, _0805E0B4\n" +"b _0805E0BE\n" +".align 2, 0\n" +"_0805E0B4: .4byte gUnknown_80F8ADC\n" +"_0805E0B8:\n" +"cmp r0, 0x4\n" +"bne _0805E0C2\n" +"ldr r0, _0805E128\n" +"_0805E0BE:\n" +"ldr r3, [r0]\n" +"movs r4, 0x1\n" +"_0805E0C2:\n" +"mov r0, r10\n" +"adds r1, r5, 0\n" +"str r3, [sp, 0x20]\n" +"bl CanMoveInDirection\n" +"lsls r0, 24\n" +"ldr r3, [sp, 0x20]\n" +"cmp r0, 0\n" +"bne _0805E0D8\n" +"movs r0, 0x2\n" +"orrs r4, r0\n" +"_0805E0D8:\n" +"cmp r7, 0\n" +"beq _0805E0F4\n" +"mov r0, r10\n" +"str r3, [sp, 0x20]\n" +"bl sub_806CEBC\n" +"adds r1, r0, 0\n" +"lsls r1, 24\n" +"lsrs r1, 24\n" +"mov r0, r10\n" +"adds r2, r5, 0\n" +"bl sub_806CDD4\n" +"ldr r3, [sp, 0x20]\n" +"_0805E0F4:\n" +"movs r7, 0x2\n" +"adds r0, r4, 0\n" +"ands r0, r7\n" +"cmp r0, 0\n" +"bne _0805E192\n" +"movs r5, 0x1\n" +"mov r9, r5\n" +"ands r5, r4\n" +"cmp r5, 0\n" +"beq _0805E134\n" +"cmp r3, 0\n" +"beq _0805E114\n" +"mov r0, r10\n" +"adds r1, r3, 0\n" +"bl SendMessage\n" +"_0805E114:\n" +"movs r0, 0x1\n" +"bl sub_8044C50\n" +"ldr r1, _0805E12C\n" +"ldr r0, [r1]\n" +"ldr r2, _0805E130\n" +"adds r0, r2\n" +"mov r3, r9\n" +"strb r3, [r0]\n" +"b _0805E1AE\n" +".align 2, 0\n" +"_0805E128: .4byte gUnknown_80F8B0C\n" +"_0805E12C: .4byte gDungeon\n" +"_0805E130: .4byte 0x00000673\n" +"_0805E134:\n" +"movs r0, 0x2\n" +"bl sub_8044C50\n" +"ldr r0, _0805E17C\n" +"ldrh r1, [r0]\n" +"adds r0, r7, 0\n" +"ands r0, r1\n" +"cmp r0, 0\n" +"bne _0805E14C\n" +"movs r0, 0\n" +"cmp r0, 0\n" +"beq _0805E188\n" +"_0805E14C:\n" +"movs r0, 0x9E\n" +"lsls r0, 1\n" +"add r0, r8\n" +"ldr r0, [r0]\n" +"bl RoundUpFixedPoint\n" +"cmp r0, 0\n" +"beq _0805E188\n" +"mov r1, r10\n" +"ldr r0, [r1, 0x70]\n" +"adds r0, 0xBC\n" +"ldrb r0, [r0]\n" +"cmp r0, 0x2\n" +"beq _0805E174\n" +"ldr r2, _0805E180\n" +"ldr r0, [r2]\n" +"ldr r3, _0805E184\n" +"adds r0, r3\n" +"mov r1, r9\n" +"strb r1, [r0]\n" +"_0805E174:\n" +"mov r0, r8\n" +"adds r0, 0x48\n" +"strb r5, [r0]\n" +"b _0805E1AE\n" +".align 2, 0\n" +"_0805E17C: .4byte gRealInputs\n" +"_0805E180: .4byte gDungeon\n" +"_0805E184: .4byte 0x0000066c\n" +"_0805E188:\n" +"mov r0, r8\n" +"adds r0, 0x48\n" +"movs r2, 0x1\n" +"strb r2, [r0]\n" +"b _0805E1AE\n" +"_0805E192:\n" +"movs r3, 0x1\n" +"ands r4, r3\n" +"cmp r4, 0\n" +"beq _0805E1A0\n" +"movs r0, 0x23\n" +"bl sub_803E724\n" +"_0805E1A0:\n" +"movs r0, 0xF\n" +"bl sub_803E46C\n" +"ldr r5, [sp, 0x14]\n" +"cmp r5, 0\n" +"bne _0805E1AE\n" +"b _0805DB24\n" +"_0805E1AE:\n" +"ldr r1, [sp, 0x18]\n" +"ldrb r0, [r1]\n" +"cmp r0, 0\n" +"beq _0805E1BA\n" +"bl sub_804AA60\n" +"_0805E1BA:\n" +"ldr r4, [sp, 0x1C]\n" +"ldrh r0, [r4]\n" +"cmp r0, 0x2D\n" +"beq _0805E1C6\n" +"cmp r0, 0x13\n" +"bne _0805E1E0\n" +"_0805E1C6:\n" +"mov r0, r10\n" +"bl HandleTalkFieldAction\n" +"bl sub_8044B28\n" +"lsls r0, 24\n" +"cmp r0, 0\n" +"bne _0805E2B0\n" +"movs r0, 0\n" +"bl sub_8044C50\n" +"bl _0805D980\n" +"_0805E1E0:\n" +"lsls r0, r6, 24\n" +"lsrs r1, r0, 24\n" +"cmp r1, 0\n" +"bne _0805E222\n" +"ldr r2, _0805E210\n" +"ldr r0, [r2]\n" +"ldr r3, _0805E214\n" +"adds r0, r3\n" +"strb r1, [r0]\n" +"ldrh r0, [r4]\n" +"cmp r0, 0\n" +"beq _0805E218\n" +"mov r0, r10\n" +"movs r1, 0\n" +"bl IsNotAttacking\n" +"lsls r0, 24\n" +"cmp r0, 0\n" +"bne _0805E2B0\n" +"movs r0, 0xF\n" +"bl sub_803E46C\n" +"b _0805E2B0\n" +".align 2, 0\n" +"_0805E210: .4byte gDungeon\n" +"_0805E214: .4byte 0x0000066d\n" +"_0805E218:\n" +"movs r0, 0xF\n" +"bl sub_803E46C\n" +"bl _0805D980\n" +"_0805E222:\n" +"movs r0, 0xF\n" +"bl sub_803E46C\n" +"bl sub_8047158\n" +"movs r2, 0\n" +"lsrs r0, r6, 8\n" +"lsls r0, 24\n" +"cmp r0, 0\n" +"bne _0805E238\n" +"movs r2, 0x1\n" +"_0805E238:\n" +"lsrs r1, r6, 16\n" +"lsls r1, 24\n" +"lsrs r1, 24\n" +"adds r0, r2, 0\n" +"bl ShowFieldMenu\n" +"bl ResetRepeatTimers\n" +"bl ResetUnusedInputStruct\n" +"ldr r1, _0805E294\n" +"movs r0, 0\n" +"strb r0, [r1]\n" +"movs r0, 0\n" +"ldr r5, [sp, 0x18]\n" +"strb r0, [r5]\n" +"bl sub_804AA60\n" +"bl sub_8044B28\n" +"lsls r0, 24\n" +"lsrs r1, r0, 24\n" +"cmp r1, 0\n" +"bne _0805E2B0\n" +"ldrh r0, [r4]\n" +"cmp r0, 0\n" +"beq _0805E29C\n" +"cmp r0, 0x2B\n" +"bne _0805E27E\n" +"ldr r2, _0805E298\n" +"ldr r0, [r2]\n" +"movs r3, 0x1\n" +"strb r3, [r0, 0x4]\n" +"ldr r0, [r2]\n" +"strb r3, [r0, 0x3]\n" +"_0805E27E:\n" +"ldr r5, [sp, 0x1C]\n" +"ldrh r0, [r5]\n" +"cmp r0, 0x2E\n" +"bne _0805E2B0\n" +"ldr r2, _0805E298\n" +"ldr r0, [r2]\n" +"movs r3, 0x1\n" +"strb r3, [r0, 0x4]\n" +"ldr r0, [r2]\n" +"strb r1, [r0, 0x3]\n" +"b _0805E2B0\n" +".align 2, 0\n" +"_0805E294: .4byte gUnknown_202F22D\n" +"_0805E298: .4byte gDungeon\n" +"_0805E29C:\n" +"movs r0, 0xF\n" +"bl sub_803E46C\n" +"ldr r5, _0805E2C0\n" +"ldr r0, [r5]\n" +"ldrb r0, [r0, 0x4]\n" +"cmp r0, 0\n" +"bne _0805E2B0\n" +"bl _0805D980\n" +"_0805E2B0:\n" +"add sp, 0x24\n" +"pop {r3-r5}\n" +"mov r8, r3\n" +"mov r9, r4\n" +"mov r10, r5\n" +"pop {r4-r7}\n" +"pop {r0}\n" +"bx r0\n" +".align 2, 0\n" +"_0805E2C0: .4byte gDungeon\n"); +} + +#endif + +// diff --git a/src/code_8069E0C.c b/src/code_8069E0C.c index 685d44d5a..be71bcff2 100644 --- a/src/code_8069E0C.c +++ b/src/code_8069E0C.c @@ -225,7 +225,7 @@ void sub_806A120(Entity * pokemon, Entity * target, Move* move) } void sub_806A1B0(Entity *pokemon) -{ +{ if ((EntityExists(pokemon)) && (HasAbility(pokemon, ABILITY_TRUANT))) { PausedStatusTarget(pokemon,pokemon,0,1,0); } @@ -235,7 +235,7 @@ void sub_806A1E8(Entity *pokemon) { bool8 bVar3; EntityInfo *entityInfo; - + bVar3 = FALSE; if (EntityExists(pokemon)) { if (GetEntityType(pokemon) == ENTITY_MONSTER) { @@ -255,7 +255,7 @@ void sub_806A240(Entity *pokemon, Entity *target) { bool8 isNotTeamMember; EntityInfo *entityInfo; - + isNotTeamMember = FALSE; if (EntityExists(pokemon)){ if (GetEntityType(pokemon) == ENTITY_MONSTER) { @@ -278,7 +278,7 @@ void sub_806A240(Entity *pokemon, Entity *target) void sub_806A2BC(Entity *pokemon, u8 param_2) { - if ((EntityExists(pokemon)) && (GetEntityType(pokemon) == ENTITY_MONSTER) && (gDungeon->cameraTarget != pokemon)) { + if ((EntityExists(pokemon)) && (GetEntityType(pokemon) == ENTITY_MONSTER) && (gDungeon->unk181e8.cameraTarget != pokemon)) { if (param_2 != '\0') { sub_804178C(1); while (gDungeon->unk12 < 0x3c) { diff --git a/src/code_806CD90.c b/src/code_806CD90.c index c306a729e..bd8d50b6b 100644 --- a/src/code_806CD90.c +++ b/src/code_806CD90.c @@ -58,9 +58,9 @@ void sub_806CCB4(Entity *entity, u8 a1) EntityInfo *info; info = entity->info; - flag = gDungeon->hallucinating; + flag = gDungeon->unk181e8.hallucinating; - if (entity == gDungeon->cameraTarget) + if (entity == gDungeon->unk181e8.cameraTarget) flag = FALSE; entity->unk6B = a1; @@ -177,7 +177,7 @@ void sub_806CF18(Entity *entity) if (!EntityExists(entity)) return; - + entityInfo = entity->info; for (i = 0; i < 100; i++) { sub_803E46C(33); diff --git a/src/code_808333C.c b/src/code_808333C.c index aeb8ec089..3349d64ba 100644 --- a/src/code_808333C.c +++ b/src/code_808333C.c @@ -21,9 +21,9 @@ bool8 sub_8083568(s32 inX, s32 inY, u8 index) { register s32 tmp asm("r2"); #endif - x = inX - gDungeon->cameraPixelPos.x; - y = inY - gDungeon->cameraPixelPos.y; - + x = inX - gDungeon->unk181e8.cameraPixelPos.x; + y = inY - gDungeon->unk181e8.cameraPixelPos.y; + if (x >= -16 && y >= -16 && x <= 255 && y <= 175) { struct unkStruct_202ED28 *ptr = gUnknown_202ED28; @@ -50,7 +50,7 @@ bool8 sub_8083568(s32 inX, s32 inY, u8 index) { tmp2 |= tmp; sp->unk6 = tmp2; - + AddSprite(sp, 0, NULL, NULL); return TRUE; } diff --git a/src/code_80869E4.c b/src/code_80869E4.c index 9e9b198aa..f8cb21b2e 100644 --- a/src/code_80869E4.c +++ b/src/code_80869E4.c @@ -419,10 +419,10 @@ void sub_8086854(void) if (gUnknown_202F3D0.unk5 != 0) gUnknown_202F3D0.unk5--; - gDungeon->unk181FC = gUnknown_8107314[gUnknown_202F3D0.unk5]; + gDungeon->unk181e8.unk181FC = gUnknown_8107314[gUnknown_202F3D0.unk5]; } else - gDungeon->unk181FC = 0; + gDungeon->unk181e8.unk181FC = 0; } void sub_80868F4(Entity *entity) @@ -544,4 +544,4 @@ void sub_80869E4(Entity *a0, s32 a1, u8 a2, s8 a3) "\tpop {r0}\n" "\tbx r0"); } -#endif // NONMATCHING \ No newline at end of file +#endif // NONMATCHING diff --git a/src/dungeon_ai_movement.c b/src/dungeon_ai_movement.c index 4ec245c37..837a5b716 100644 --- a/src/dungeon_ai_movement.c +++ b/src/dungeon_ai_movement.c @@ -282,7 +282,7 @@ bool8 ChooseTargetPosition(Entity *pokemon) // This item targeting code is never reached because the leader is never AI-controlled. u8 room; s32 minX, minY, maxX, maxY, x, y, maxY2; - if (gDungeon->visibilityRange) { + if (gDungeon->unk181e8.visibilityRange) { // Dead code. u8 a = -a; } diff --git a/src/dungeon_map_access_1.c b/src/dungeon_map_access_1.c index 93a0cb76f..45bea0de0 100644 --- a/src/dungeon_map_access_1.c +++ b/src/dungeon_map_access_1.c @@ -21,7 +21,7 @@ void sub_804AA60(void) { } } sub_80098F8(2); - gDungeon->unk1821A = 0; + gDungeon->unk181e8.unk1821A = 0; } void sub_804AAAC(void) @@ -121,8 +121,8 @@ void sub_804AC20(Position *pos) tile2 = GetTile(pos->x,pos->y); roomIndex = tile2->room; - visibilityRange = gDungeon->visibilityRange; - if (!gDungeon->blinded) { + visibilityRange = gDungeon->unk181e8.visibilityRange; + if (!gDungeon->unk181e8.blinded) { if (visibilityRange == 0) { visibilityRange = 2; } diff --git a/src/dungeon_range.c b/src/dungeon_range.c index 34392f6ff..6cd4a3941 100644 --- a/src/dungeon_range.c +++ b/src/dungeon_range.c @@ -8,7 +8,7 @@ bool8 IsPositionActuallyInSight(Position *pos1, Position *pos2) { u8 pos1Room; - u8 visibility = gDungeon->visibilityRange; + u8 visibility = gDungeon->unk181e8.visibilityRange; struct Tile *tile1; if (visibility == 0) { @@ -103,9 +103,9 @@ void sub_80833E8(Position *param_1, s32 *param_2) struct RoomData *mapRoom; u32 visibility; u32 room; - + tile = GetTile(param_1->x, param_1->y); - visibility = gDungeon->visibilityRange; + visibility = gDungeon->unk181e8.visibilityRange; if (visibility == 0) { visibility = 2; } @@ -136,7 +136,7 @@ bool8 IsTargetTwoTilesAway(Position *pos1, Position *pos2) s32 yDiff; s32 x2; s32 y2; - + diff = pos1->x - pos2->x; if (diff < 0) { diff --git a/src/dungeon_util.c b/src/dungeon_util.c index bc9d2d760..4f6857860 100644 --- a/src/dungeon_util.c +++ b/src/dungeon_util.c @@ -77,40 +77,40 @@ Tile *GetTileAtEntitySafe(Entity *entity) void sub_804513C(void) { s32 index; - + for(index = 0; index < MAX_TEAM_MEMBERS; index++) { gDungeon->teamPokemon[index] = &gDungeon->teamPokemonEntities[index]; gDungeon->teamPokemon[index]->type = ENTITY_NOTHING; } - + for(index = 0; index < 6; index++) { gUnknown_202EE70[index] = 0; } - + for(index = 0; index < DUNGEON_MAX_WILD_POKEMON; index++) { gDungeon->wildPokemon[index] = &gDungeon->wildPokemonEntities[index]; gDungeon->wildPokemon[index]->type = ENTITY_NOTHING; } - + for(index = 0; index < 0x10; index++) { gUnknown_202EE76[index] = 0; } - + for(index = 0; index < DUNGEON_MAX_POKEMON; index++) { gDungeon->allPokemon[index] = NULL; } - + for (index = 0; index < DUNGEON_MAX_ITEMS; index++) { gDungeon->items[index] = &gDungeon->itemEntities[index]; gDungeon->items[index]->type = ENTITY_NOTHING; } - + for(index = 0; index < DUNGEON_MAX_TRAPS; index++) { gDungeon->traps[index] = &gDungeon->trapEntites[index]; @@ -126,15 +126,15 @@ void sub_804522C(void) { u32 statusSprites; bool8 crossEyed; - crossEyed = gDungeon->hallucinating; - if (gDungeon->blinded) + crossEyed = gDungeon->unk181e8.hallucinating; + if (gDungeon->unk181e8.blinded) { for(index = 0; index < DUNGEON_MAX_POKEMON; index++) { entity = gDungeon->allPokemon[index]; if(EntityExists(entity)) { - if(entity == gDungeon->cameraTarget) + if(entity == gDungeon->unk181e8.cameraTarget) { sub_806C51C(entity); } @@ -165,12 +165,12 @@ void sub_804522C(void) { sub_806C51C(entity2); } } - + for(index = 0; index < gDungeon->unk3904; index++) { sub_80462AC(gDungeon->items[index], crossEyed, 1, 0xFF, 0); } - + if(crossEyed) sub_807FA9C(); } diff --git a/src/move_actions.c b/src/move_actions.c index 90d20e969..8bf59f795 100644 --- a/src/move_actions.c +++ b/src/move_actions.c @@ -80,8 +80,8 @@ extern u8 *gUnknown_80FD2B4[]; extern u8 *gUnknown_80FAC74[]; extern u8 *gUnknown_80FAC54[]; extern u32 gUnknown_80F4F50; -extern s16 gUnknown_80F4DB8; -extern s16 gUnknown_80F4DBA; +extern s16 gUnknown_80F4DB8; +extern s16 gUnknown_80F4DBA; extern s16 gUnknown_80F55BC[]; extern u8 *gUnknown_80FAE00[]; extern u8 *gUnknown_80FADD8[]; @@ -370,7 +370,7 @@ bool8 sub_805768C(Entity *pokemon, Entity *target, Move *move, s32 param_4) { bool8 flag; - flag = FALSE; + flag = FALSE; gUnknown_202F21C++; if (sub_8055640(pokemon, target, move, gUnknown_8106A54[gUnknown_202F21C], param_4) == 0) @@ -557,7 +557,7 @@ bool8 TormentMoveAction(Entity *pokemon, Entity *target, Move *move, s32 param_4 Move struggleMove; EntityInfo *entityInfo; bool8 isTormented; - + entityInfo = target->info; isTormented = FALSE; @@ -663,7 +663,7 @@ bool32 sub_8057CD0(Entity * pokemon, Entity * target, Move * move, u32 param_4) { u32 weather; s32 flag; - + weather = GetApparentWeather(pokemon); flag = sub_80556BC(pokemon,target,gUnknown_80F51E4[weather],move, gUnknown_80F51EC[weather],param_4); @@ -792,7 +792,7 @@ bool8 sub_8057E6C(Entity *pokemon, Entity *target, Move *move, u32 param_4) { EntityInfo *entityInfo; bool8 flag; - + flag = FALSE; entityInfo = pokemon->info; SendThawedMessage(pokemon,target); @@ -808,7 +808,7 @@ bool8 sub_8057E6C(Entity *pokemon, Entity *target, Move *move, u32 param_4) bool8 sub_8057ED0(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; @@ -823,7 +823,7 @@ bool8 sub_8057ED0(Entity *pokemon, Entity *target, Move *move, u32 param_4) bool8 sub_8057F24(Entity *pokemon, Entity *target, Move *move, s32 param_4) { EntityInfo *entityInfo; - + entityInfo = pokemon->info; entityInfo->HP = 1; ChangeAttackMultiplierTarget(pokemon,target,gUnknown_8106A4C,0x40,TRUE); @@ -835,7 +835,7 @@ bool8 sub_8057F24(Entity *pokemon, Entity *target, Move *move, s32 param_4) bool8 sub_8057F7C(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; @@ -857,7 +857,7 @@ bool8 sub_8057FCC(Entity *pokemon, Entity *target, Move *move, s32 param_4) bool8 sub_8057FF4(Entity *pokemon, Entity *target, Move *move, s32 param_4) { u8 flashFireStatus; - + flashFireStatus = GetFlashFireStatus(target); if (flashFireStatus != FLASH_FIRE_STATUS_NONE) { if (target->info->unk152 == 0) { @@ -887,7 +887,7 @@ bool8 sub_805805C(Entity * pokemon,Entity * target,Move * move,s32 param_4) s32 IQ; entityInfo = pokemon->info; - + r6 = 1; index = 0; @@ -911,7 +911,7 @@ bool8 GrudgeMoveAction(Entity *pokemon, Entity * target, Move *move, s32 param_4 { EntityInfo *entityInfo; bool8 hasGrudge; - + hasGrudge = FALSE; entityInfo = target->info; SetMessageArgument(gUnknown_202DFE8,target,0); @@ -935,7 +935,7 @@ bool8 CounterMoveAction(Entity *pokemon, Entity *target, Move *move, s32 param_4 bool8 sub_805816C(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) { @@ -951,7 +951,7 @@ bool8 sub_805816C(Entity *pokemon, Entity *target, Move *move, u32 param_4) bool8 sub_80581D0(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) { @@ -1011,7 +1011,7 @@ bool8 sub_80582D4(Entity *pokemon, Entity *target, Move *move, u32 param_4) bool8 RazorWindMoveAction(Entity * pokemon, Entity * target, Move * move, u32 param_4) { bool8 flag; - + if (MoveMatchesChargingStatus(pokemon,move)) { flag = sub_8055640(pokemon,target,move,gUnknown_80F4F50,param_4) ? TRUE : FALSE; sub_8079764(pokemon); @@ -1026,14 +1026,14 @@ bool8 RazorWindMoveAction(Entity * pokemon, Entity * target, Move * move, u32 pa bool8 BideMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) { SetChargeStatusTarget(pokemon, target, STATUS_BIDE, move, *gUnknown_80FAC74); - return TRUE; + return TRUE; } bool8 sub_805836C(Entity *pokemon, Entity *target, Move *move, u32 param_4) { s32 iVar2; bool8 local_18; - + local_18 = FALSE; iVar2 = pokemon->info->unkA0 * 2; if (999 < iVar2) { @@ -1048,7 +1048,7 @@ bool8 sub_805836C(Entity *pokemon, Entity *target, Move *move, u32 param_4) bool8 sub_80583D8(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; @@ -1063,7 +1063,7 @@ bool8 sub_80583D8(Entity *pokemon, Entity *target, Move *move, u32 param_4) bool8 sub_8058430(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; @@ -1078,7 +1078,7 @@ bool8 sub_8058430(Entity *pokemon, Entity *target, Move *move, u32 param_4) bool8 sub_8058478(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; @@ -1126,7 +1126,7 @@ bool8 sub_8058548(Entity *pokemon, Entity *target, Move *move, u32 param_4) bool8 sub_8058580(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; @@ -1141,7 +1141,7 @@ bool8 sub_8058580(Entity *pokemon, Entity *target, Move *move, u32 param_4) bool8 BrickBreakMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) { bool8 flag; - + flag = FALSE; if ((target->info->protection.protectionStatus == STATUS_REFLECT) || (target->info->protection.protectionStatus == STATUS_LIGHT_SCREEN)) { sub_80522F4(pokemon,target,*gUnknown_80FD104); // The barrier was shattered @@ -1156,7 +1156,7 @@ bool8 BrickBreakMoveAction(Entity *pokemon, Entity *target, Move *move, u32 para bool8 sub_8058638(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; @@ -1171,7 +1171,7 @@ bool8 sub_8058638(Entity *pokemon, Entity *target, Move *move, u32 param_4) bool8 FocusPunchMoveAction(Entity * pokemon, Entity * target, Move * move, u32 param_4) { bool8 flag; - + if (MoveMatchesChargingStatus(pokemon,move)) { flag = sub_8055640(pokemon,target,move,gUnknown_80F4F54,param_4) ? TRUE : FALSE; sub_8079764(pokemon); @@ -1190,7 +1190,7 @@ bool8 sub_80586DC(Entity * pokemon, Entity * target, Move * move, u32 param_4) s32 newHP; bool8 flag; EntityInfo *entityInfo; - + hasLiquidOoze = HasAbility(target, ABILITY_LIQUID_OOZE); uVar3 = sub_8055640(pokemon,target,move,0x100,param_4); flag = uVar3 != 0 ? TRUE : FALSE; @@ -1228,7 +1228,7 @@ bool8 sub_8058770(Entity * pokemon, Entity * target, Move * move, u32 param_4) #else EntityInfo *entityInfo; #endif - + entityInfo = pokemon->info; r2 = entityInfo->maxHPStat; r0 = r2; @@ -1258,7 +1258,7 @@ bool8 sub_8058770(Entity * pokemon, Entity * target, Move * move, u32 param_4) bool8 sub_80587E8(Entity * pokemon, Entity * target, Move * move, u32 param_4) { bool8 flag; - + if (target->info->nonVolatile.nonVolatileStatus == STATUS_PARALYSIS) { flag = sub_8055640(pokemon,target,move,0x80 << 2,param_4) ? TRUE : FALSE; SendNonVolatileEndMessage(pokemon, target); @@ -1301,7 +1301,7 @@ bool8 sub_80588B8(Entity *pokemon, Entity *target, Move *move, u32 param_4) if(sub_8055640(pokemon, target, move, 0x80 << 1, param_4) != 0) { flag = TRUE; - if(sub_8057308(pokemon, 0)) + if(sub_8057308(pokemon, 0)) { gUnknown_202F219 = 1; } @@ -1313,7 +1313,7 @@ bool8 sub_80588F4(Entity *pokemon, Entity *target, Move *move, u32 param_4) { bool8 flag; EntityInfo *entityInfo = target->info; - + flag = sub_8055640(pokemon, target, move, GetWeight(entityInfo->apparentID), param_4) != 0 ? TRUE: FALSE; return flag; } @@ -1328,7 +1328,7 @@ bool8 sub_8058930(Entity *pokemon, Entity *target, Move *move, u32 param_4) if(sub_8055640(pokemon, target, move, 0x80 << 1, param_4) != 0) { flag = TRUE; - if(sub_8057308(pokemon, gUnknown_80F4DD6)) + if(sub_8057308(pokemon, gUnknown_80F4DD6)) { entityInfo = pokemon->info; RaiseMovementSpeedTarget(pokemon, pokemon, 0, TRUE); @@ -1365,7 +1365,7 @@ bool8 sub_8058A18(Entity *pokemon, Entity *target, Move *move, u32 param_4) if(sub_8055640(pokemon, target, move, 0x80 << 1, param_4) != 0) { flag = TRUE; - if(sub_8057308(pokemon, 0)) + if(sub_8057308(pokemon, 0)) { gUnknown_202F21A = 1; } @@ -1409,7 +1409,7 @@ bool8 SkyAttackMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param bool8 sub_8058B3C(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; @@ -1425,7 +1425,7 @@ bool8 sub_8058B84(Entity *pokemon, Entity *target, Move *move, u32 param_4) { bool8 flag; EntityInfo *entityInfo; - + flag = FALSE; if (sub_8055640(pokemon,target,move,0x100,param_4) != 0) { flag = TRUE; @@ -1455,7 +1455,7 @@ bool8 sub_8058BF0(Entity *pokemon, Entity *target, Move *move, u32 param_4) bool8 sub_8058C00(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; @@ -1471,7 +1471,7 @@ bool8 sub_8058C48(Entity *pokemon, Entity *target, Move *move, u32 param_4) { s32 rand; bool8 flag; - + rand = DungeonRandRange(128, 384); // 0x80 - 0x180 rand = (rand * pokemon->info->level) / 256; if (rand < 0) { @@ -1487,7 +1487,7 @@ bool8 sub_8058C48(Entity *pokemon, Entity *target, Move *move, u32 param_4) bool8 sub_8058C98(Entity *pokemon, Entity *target, Move *move, u32 param_4, u32 param_5) { bool8 flag; - + flag = FALSE; if (sub_8055640(pokemon,target,move,0x100,param_5) != 0) { flag = TRUE; @@ -1505,7 +1505,7 @@ bool8 sub_8058CEC(Entity *pokemon, Entity *target, Move *move, u32 param_4) if(sub_8055640(pokemon, target, move, 0x80 << 1, param_4) != 0) { flag = TRUE; - if(sub_8057308(pokemon, 0)) + if(sub_8057308(pokemon, 0)) { LowerAttackStageTarget(pokemon, pokemon, gUnknown_8106A50, 2, 0, FALSE); } @@ -1533,7 +1533,7 @@ bool8 sub_8058D44(Entity * pokemon, Entity * target, Move * move, u32 param_4) #else EntityInfo *entityInfo; #endif - + entityInfo = pokemon->info; r2 = entityInfo->maxHPStat; r0 = r2; @@ -1566,7 +1566,7 @@ bool8 PsychUpMoveAction(Entity * pokemon, Entity * target, Move * move, u32 para s32 index; EntityInfo *iVar3; EntityInfo *iVar4; - + iVar4 = pokemon->info; iVar3 = target->info; nullsub_92(target); @@ -1592,7 +1592,7 @@ bool8 sub_8058E5C(Entity *pokemon, Entity *target, Move *move, s32 param_4) int iVar2; int iVar3; bool8 flag; - + flag = FALSE; if ((sub_8055640(pokemon, target, move, 0x80 << 1, param_4) != 0) && (EntityExists(pokemon))) { iVar2 = pokemon->info->maxHPStat; @@ -1622,11 +1622,11 @@ bool32 sub_8058F04(Entity *pokemon, Entity *target, Move *move, s32 param_4) bool32 flag; EntityInfo *entityInfo; s32 iVar3; - + entityInfo = target->info; iVar3 = 1; - gDungeon->unk18200 = 0xc; - gDungeon->unk18204 = 0; + gDungeon->unk181e8.unk18200 = 0xc; + gDungeon->unk181e8.unk18204 = 0; if (entityInfo->charging.chargingStatus == STATUS_DIGGING) { iVar3 = 2; } @@ -1642,7 +1642,7 @@ bool8 NaturePowerMoveAction(Entity *pokemon, Entity *target, Move *move, s32 par bool8 flag; s32 tileset; Move natureMove; - + tileset = gDungeon->tileset; if (tileset < 0) { tileset = 0; @@ -1658,7 +1658,7 @@ bool8 NaturePowerMoveAction(Entity *pokemon, Entity *target, Move *move, s32 par bool8 sub_8058FBC(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; @@ -1691,7 +1691,7 @@ bool8 ChargeMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) bool8 sub_8059080(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; @@ -1714,7 +1714,7 @@ bool8 sub_80590D4(Entity *pokemon, Entity *target, Move *move, s32 param_4) u8 moveType; bool8 uVar5; bool8 flag; - + flag = FALSE; moveType = GetMoveType(move); @@ -1736,7 +1736,7 @@ bool8 sub_80590D4(Entity *pokemon, Entity *target, Move *move, s32 param_4) bool8 sub_8059190(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; @@ -1761,7 +1761,7 @@ bool8 sub_80591E4(Entity *pokemon, Entity *target, Move *move, s32 param_4) s32 iVar4; bool8 flag; EntityInfo *entityInfo; - + flag = FALSE; hasLiquidOoze = HasAbility(target, ABILITY_LIQUID_OOZE); iVar3 = sub_8055640(pokemon,target,move,0x100,param_4); @@ -1798,7 +1798,7 @@ bool8 SkillSwapMoveAction(Entity *pokemon, Entity *target, Move *move, s32 param u8 *puVar6; EntityInfo * targetEntityInfo; EntityInfo * pokeEntityData; - + pokeEntityData = pokemon->info; targetEntityInfo = target->info; if ((HasAbility(target, ABILITY_WONDER_GUARD)) || (HasAbility(pokemon, ABILITY_WONDER_GUARD))) { @@ -1827,7 +1827,7 @@ bool8 SkillSwapMoveAction(Entity *pokemon, Entity *target, Move *move, s32 param return flag; } -// https://decomp.me/scratch/Ul8x5 +// https://decomp.me/scratch/Ul8x5 #ifdef NONMATCHING bool32 SketchMoveAction(Entity *pokemon, Entity *target, Move *move, s32 param_4) { @@ -1838,7 +1838,7 @@ bool32 SketchMoveAction(Entity *pokemon, Entity *target, Move *move, s32 param_4 register bool32 flag asm("sl"); struct Move *move1; s32 other_flag = 0; - + flag = 0; pokeInfo = pokemon->info; targetInfo = target->info; @@ -1850,7 +1850,7 @@ bool32 SketchMoveAction(Entity *pokemon, Entity *target, Move *move, s32 param_4 if ((((move1->moveFlags & MOVE_FLAG_EXISTS))) && ((targetInfo->moves[moveIndex].moveFlags & 0x10))) { moveID = targetInfo->moves[moveIndex].id; goto _moveIDcheck; - } + } } if(other_flag == 0) @@ -1866,7 +1866,7 @@ _moveIDcheck: else { InitPokemonMove(move, moveID); sub_80928C0(gUnknown_202DE58, move, 0); - move->moveFlags2 |= MOVE_FLAG2_UNK4; + move->moveFlags2 |= MOVE_FLAG2_UNK4; move->moveFlags2 |= MOVE_FLAG_REPLACE; sub_80522F4(pokemon, target, *gUnknown_80FE38C); if (pokeInfo->unkFB == 0) { @@ -2003,7 +2003,7 @@ bool32 SketchMoveAction(Entity *pokemon, Entity *target, Move *move, s32 param_4 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; @@ -2019,7 +2019,7 @@ 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; @@ -2058,7 +2058,7 @@ bool8 sub_8059528(Entity *pokemon, Entity *target, Move *move, u32 param_4) 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; @@ -2079,7 +2079,7 @@ bool8 sub_8059588(Entity *pokemon, Entity *target, Move *move, u32 param_4) 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; @@ -2095,7 +2095,7 @@ 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); @@ -2113,11 +2113,11 @@ bool8 SolarBeamMoveAction(Entity * pokemon,Entity * target,Move * move,u32 param { 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; } @@ -2134,7 +2134,7 @@ bool8 SolarBeamMoveAction(Entity * pokemon,Entity * target,Move * move,u32 param 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; @@ -2144,7 +2144,7 @@ bool8 sub_8059714(Entity * pokemon,Entity * target,Move * move,u32 param_4) 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; @@ -2166,7 +2166,7 @@ bool8 sub_80597F0(Entity * pokemon,Entity * target,Move * move,u32 param_4) 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); @@ -2185,7 +2185,7 @@ bool8 DiveMoveAction(Entity * pokemon, Entity * target, Move * move, u32 param_4 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; @@ -2207,7 +2207,7 @@ bool8 sub_8059928(Entity * pokemon,Entity * target,Move * move,u32 param_4) { bool8 flag; s32 iVar2; - + iVar2 = 1; flag = FALSE; if ((u8)(target->info->charging.chargingStatus - 7) <= 1){ @@ -2218,7 +2218,7 @@ bool8 sub_8059928(Entity * pokemon,Entity * target,Move * move,u32 param_4) flag = TRUE; if(sub_805727C(pokemon,target,gUnknown_80F4DEC) != 0) { CringeStatusTarget(pokemon,target,FALSE); - } + } } return flag; } @@ -2226,7 +2226,7 @@ bool8 sub_8059928(Entity * pokemon,Entity * target,Move * move,u32 param_4) 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; @@ -2260,7 +2260,7 @@ 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); @@ -2289,7 +2289,7 @@ bool8 sub_8059AC4(Entity *pokemon, Entity *target, Move *move, u32 param_4) 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); @@ -2317,7 +2317,7 @@ bool8 ConversionMoveAction(Entity * pokemon,Entity * target,Move * move,u32 para s32 counter; s32 newIndex; Move *moveStack [MAX_MON_MOVES]; - + counter = 0; info = target->info; if (HasAbility(target, ABILITY_FORECAST)) { @@ -2389,7 +2389,7 @@ bool8 sub_8059CF0(Entity *pokemon, Entity *target, Move *move, u32 param_4) 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; @@ -2410,7 +2410,7 @@ bool8 sub_8059D48(Entity *pokemon, Entity *target, Move *move, u32 param_4) 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; @@ -2443,7 +2443,7 @@ bool8 sub_8059DB4(Entity *pokemon, Entity *target, Move *move, u32 param_4) 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; @@ -2458,7 +2458,7 @@ bool8 sub_8059DC4(Entity *pokemon, Entity *target, Move *move, u32 param_4) 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; @@ -2478,7 +2478,7 @@ bool8 sub_8059E54(Entity * pokemon,Entity * target,Move * move,u32 param_4,u8 pa 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; @@ -2502,7 +2502,7 @@ bool8 sub_8059E54(Entity * pokemon,Entity * target,Move * move,u32 param_4,u8 pa 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) { @@ -2528,7 +2528,7 @@ bool8 sub_8059FC8(Entity * pokemon,Entity * target,Move * move,u32 param_4,u8 pa 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; @@ -2611,7 +2611,7 @@ bool8 sub_805A120(Entity * pokemon,Entity * target, Move *move, u32 param_4) if (!(item1->flags & ITEM_FLAG_EXISTS)) flag = TRUE; - if(!(item2->flags & ITEM_FLAG_EXISTS)) + if(!(item2->flags & ITEM_FLAG_EXISTS)) flag = TRUE; if (flag) @@ -2661,7 +2661,7 @@ bool8 MudWaterSportMoveAction(Entity * pokemon, Entity * target, Move *move, u32 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; @@ -2694,7 +2694,7 @@ bool8 SurfMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) { bool8 flag; u32 uVar2; - + flag = FALSE; if (target->info->charging.chargingStatus == STATUS_DIVING) { uVar2 = 0x200; @@ -2712,7 +2712,7 @@ bool8 RolePlayMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_ { EntityInfo * entityInfo; EntityInfo * targetEntityInfo; - + entityInfo = pokemon->info; targetEntityInfo = target->info; if (HasAbility(target, ABILITY_WONDER_GUARD)) { @@ -2757,7 +2757,7 @@ bool8 WishMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) 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; @@ -2780,7 +2780,7 @@ 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; @@ -2814,10 +2814,10 @@ bool8 sub_805A4FC(Entity *pokemon, Entity *target, Move *move, u32 param_4) return TRUE; } -bool8 SwallowMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) +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); @@ -2843,11 +2843,11 @@ bool8 sub_805A568(Entity * pokemon, Entity * target, Move *move, u32 param_4) return flag; } -bool8 TickleMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) +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; @@ -2860,11 +2860,11 @@ bool8 TickleMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) return flag; } -bool8 sub_805A5E8(Entity *pokemon, Entity *target, Move *move, u32 stat, u32 param_5) +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; @@ -2879,10 +2879,10 @@ bool8 sub_805A5E8(Entity *pokemon, Entity *target, Move *move, u32 stat, u32 par return flag; } -bool8 SpitUpMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) +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); @@ -2897,7 +2897,7 @@ bool8 SpitUpMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_4) 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; @@ -2925,12 +2925,12 @@ bool8 KnockOffMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_ targetEntityInfo2 = targetEntityInfo1; SetMessageArgument(gAvailablePokemonNames, pokemon, 0); SetMessageArgument(gAvailablePokemonNames + 0x50, target, 0); - if (HasAbility(target, ABILITY_STICKY_HOLD)) + if (HasAbility(target, ABILITY_STICKY_HOLD)) { sub_80522F4(pokemon,target,*gUnknown_80FCCE8); return FALSE; } - else if (HasHeldItem(target, ITEM_ALERT_SPECS)) + else if (HasHeldItem(target, ITEM_ALERT_SPECS)) { sub_80522F4(pokemon,target,*gUnknown_80FD57C); return FALSE; @@ -2941,7 +2941,7 @@ bool8 KnockOffMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_ itemFlag = heldItem.flags; flag = ITEM_FLAG_EXISTS; flag &= itemFlag; - if (flag == 0) + if (flag == 0) { sub_80522F4(pokemon,target,*gUnknown_80FD18C); return FALSE; @@ -2956,7 +2956,7 @@ bool8 KnockOffMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_ 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) + if (sub_80706A4(target, &target->pos) != 0) { sub_807D148(pokemon, target, 0, NULL); } @@ -2968,7 +2968,7 @@ bool8 KnockOffMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_ void sub_805A7D4(Entity * pokemon, Entity * target, Item *item, Position *pos) { Entity stackEntity; - + stackEntity.type = ENTITY_ITEM; stackEntity.unk24 = 0; stackEntity.isVisible = TRUE; @@ -2998,7 +2998,7 @@ bool8 sub_805A85C(Entity * pokemon, Entity * target, Move *move, u32 param_4) s32 temp2; u8 check; - + pos1 = target->pos; sub_806CDD4(target,10,8); @@ -3126,7 +3126,7 @@ bool8 LightScreenMoveAction(Entity * pokemon, Entity * target, Move *move, u32 p 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; @@ -3169,7 +3169,7 @@ bool8 SecretPowerMoveAction(Entity * pokemon, Entity * target, Move *move, u32 p 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; @@ -3222,7 +3222,7 @@ bool8 sub_805AD54(Entity * pokemon, Entity * target, Move *move, u32 param_4) #endif Entity **possibleTargets; bool8 flag; - + flag = FALSE; info = pokemon->info; if (pokemon->info->isNotTeamMember) { @@ -3256,7 +3256,7 @@ bool8 sub_805AD54(Entity * pokemon, Entity * target, Move *move, u32 param_4) 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; @@ -3279,7 +3279,7 @@ bool8 sub_805AE74(Entity * pokemon, Entity * target, Move *move, u32 param_4) 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) { @@ -3297,7 +3297,7 @@ bool8 PresentMoveAction(Entity * pokemon, Entity * target, Move *move, u32 param s32 rand2; s32 HP; bool8 flag; -#ifndef NONMATCHING +#ifndef NONMATCHING register Move *move_r6 asm("r6"); register u32 param_4_r4 asm("r4"); #else diff --git a/src/status_actions.c b/src/status_actions.c index 907bb7621..1f237e58f 100644 --- a/src/status_actions.c +++ b/src/status_actions.c @@ -171,7 +171,7 @@ bool8 sub_805AFA4(Entity * pokemon, Entity * target, Move *move, u32 param_4) #else EntityInfo *entityInfo; #endif - + SendThawedMessage(pokemon, target); entityInfo = pokemon->info; r2 = entityInfo->maxHPStat; @@ -200,13 +200,13 @@ bool8 sub_805AFA4(Entity * pokemon, Entity * target, Move *move, u32 param_4) } bool8 sub_805B028(Entity * pokemon,Entity * target,Move *move) -{ +{ ParalyzeStatusTarget(pokemon,target, TRUE); return TRUE; } bool8 TransformMoveAction(Entity * pokemon, Entity * target, Move *move, s32 param_4) -{ +{ if (IsBossFight()) { sub_80522F4(pokemon,target,*gUnknown_80FEFF4); return FALSE; @@ -219,7 +219,7 @@ bool8 TransformMoveAction(Entity * pokemon, Entity * target, Move *move, s32 par } bool8 sub_805B074(Entity * pokemon, Entity * target, Move *move, s32 param_4) -{ +{ bool8 flag; flag = FALSE; @@ -233,7 +233,7 @@ bool8 sub_805B074(Entity * pokemon, Entity * target, Move *move, s32 param_4) } bool8 sub_805B0BC(Entity * pokemon, Entity * target) -{ +{ sub_807CD9C(pokemon, target, pokemon->info->action.direction); return TRUE; } @@ -294,13 +294,13 @@ bool8 sub_805B17C(Entity * pokemon, Entity * target, Move *move, s32 param_4) } bool8 PerishSongMoveAction(Entity * pokemon,Entity * target,Move *move, s32 param_4) -{ +{ PerishSongTarget(pokemon, target); return TRUE; } bool8 WrapMoveAction(Entity * pokemon,Entity * target,Move *move, s32 param_4) -{ +{ WrapTarget(pokemon, target); return TRUE; } @@ -310,11 +310,11 @@ bool8 SpikesMoveAction(Entity * pokemon, Entity * target, Move *move, s32 param_ bool8 trapLaid; u8 uVar2; bool8 isNotTeamMember; - + trapLaid = FALSE; isNotTeamMember = pokemon->info->isNotTeamMember; uVar2 = 1; - + if (isNotTeamMember) { uVar2 = 2; } @@ -336,12 +336,12 @@ bool8 sub_805B264(Entity * pokemon, Entity * target, Move *move, s32 param_4) s32 iVar5; EntityInfo *entityInfo; - entityInfo = target->info; + entityInfo = target->info; r3 = gUnknown_202F224; r6 = FALSE; - gDungeon->unk18200 = gUnknown_8106A8C[r3]; - gDungeon->unk18204 = 0; + gDungeon->unk181e8.unk18200 = gUnknown_8106A8C[r3]; + gDungeon->unk181e8.unk18204 = 0; iVar5 = gUnknown_80F4F94[r3]; if (entityInfo->charging.chargingStatus == STATUS_DIGGING) { iVar5 *= 2; @@ -351,19 +351,19 @@ bool8 sub_805B264(Entity * pokemon, Entity * target, Move *move, s32 param_4) } bool8 MagicCoatMoveAction(Entity * pokemon,Entity * target,Move *move, s32 param_4) -{ +{ MagicCoatStatusTarget(pokemon, target); return TRUE; } bool8 ProtectMoveAction(Entity * pokemon,Entity * target,Move *move, s32 param_4) -{ +{ ProtectStatusTarget(pokemon, target); return TRUE; } bool8 sub_805B2FC(Entity * pokemon,Entity * target,Move *move, s32 param_4) -{ +{ RaiseDefenseStageTarget(pokemon,target,gUnknown_8106A4C,1); return TRUE; } @@ -389,24 +389,24 @@ bool8 sub_805B324(Entity * pokemon,Entity * target,Move *move, s32 param_4) } bool8 DestinyBondMoveAction(Entity * pokemon,Entity * target,Move *move, s32 param_4) -{ +{ DestinyBondStatusTarget(pokemon, target); return TRUE; } bool8 sub_805B388(Entity * pokemon,Entity * target,Move *move, s32 param_4) -{ +{ return (sub_8055640(pokemon,target,move,0x100,param_4)) ? TRUE : FALSE; } bool8 MirrorCoatMoveAction(Entity * pokemon,Entity * target,Move *move, s32 param_4) -{ +{ MirrorCoatStatusTarget(pokemon, target); return TRUE; } bool8 sub_805B3B4(Entity * pokemon,Entity * target,Move *move, s32 param_4) -{ +{ u32 stat = gUnknown_8106A50; RaiseAttackStageTarget(pokemon,target,stat,1); RaiseDefenseStageTarget(pokemon,target,stat,1); @@ -414,7 +414,7 @@ bool8 sub_805B3B4(Entity * pokemon,Entity * target,Move *move, s32 param_4) } bool8 sub_805B3E0(Entity * pokemon,Entity * target,Move *move, s32 param_4) -{ +{ sub_8055640(pokemon,target,move,0x100,param_4); return TRUE; } @@ -528,7 +528,7 @@ bool8 sub_805B618(Entity * pokemon, Entity * target, Move *move, s32 param_4) u32 index; index = gUnknown_202F228; - + InitPokemonMove(&natureMove, gUnknown_80F59C8[index].moveID); flag = gUnknown_80F59C8[index].move(pokemon, target, &natureMove, param_4); return flag; @@ -540,7 +540,7 @@ bool8 sub_805B668(Entity * pokemon, Entity * target, Move *move, s32 param_4) s32 iVar3; s32 newHP; bool8 flag; - + flag = FALSE; hasLiquidOoze = HasAbility(target, ABILITY_LIQUID_OOZE); if (IsSleeping(target)) { @@ -584,7 +584,7 @@ bool8 RecycleMoveAction(Entity * pokemon, Entity * target, Move *move, s32 param s32 index; EntityInfo *entityInfo; bool8 isTMRecycled; - + entityInfo = target->info; isTMRecycled = FALSE; if (!entityInfo->isNotTeamMember) { @@ -635,7 +635,7 @@ bool8 sub_805B808(Entity * pokemon, Entity * target, Move *move, s32 param_4) } bool8 sub_805B884( Entity * pokemon, Entity * target, Move *move, s32 param_4) -{ +{ RaiseAttackStageTarget(pokemon, target, gUnknown_8106A4C, 1); RaiseMovementSpeedTarget(pokemon, target, 0, TRUE); return TRUE; @@ -1026,10 +1026,10 @@ bool8 TrapbustOrbAction(Entity * pokemon,Entity * target, Move *move, s32 param_ else { if (tile->room == CORRIDOR_ROOM) { - bottomRightCornerX = target->pos.x - gDungeon->visibilityRange; - bottomRightCornerY = target->pos.y - gDungeon->visibilityRange; - topLeftCornerX = bottomRightCornerX + gDungeon->visibilityRange; - topLeftCornerY = bottomRightCornerY + gDungeon->visibilityRange; + bottomRightCornerX = target->pos.x - gDungeon->unk181e8.visibilityRange; + bottomRightCornerY = target->pos.y - gDungeon->unk181e8.visibilityRange; + topLeftCornerX = bottomRightCornerX + gDungeon->unk181e8.visibilityRange; + topLeftCornerY = bottomRightCornerY + gDungeon->unk181e8.visibilityRange; } else { room = &gDungeon->roomData[tile->room]; @@ -1179,8 +1179,8 @@ bool8 FillInOrbAction(Entity *pokemon,Entity *target, Move *move, s32 param_4) else { // Calculate the coordinates of the tile in front of the user - tileCoords.x = target->pos.x + gAdjacentTileOffsets[targetInfo->action.direction].x; - tileCoords.y = target->pos.y + gAdjacentTileOffsets[targetInfo->action.direction].y; + tileCoords.x = target->pos.x + gAdjacentTileOffsets[targetInfo->action.direction].x; + tileCoords.y = target->pos.y + gAdjacentTileOffsets[targetInfo->action.direction].y; sub_8042A54(&tileCoords); tileToFill = GetTileSafe(tileCoords.x,tileCoords.y); diff --git a/src/status_checks_1.c b/src/status_checks_1.c index 72b6aea3c..527e4b313 100644 --- a/src/status_checks_1.c +++ b/src/status_checks_1.c @@ -57,8 +57,8 @@ s32 sub_8070828(Entity *pokemon, bool8 displayMessage) void SetMessageArgument_2(u8 *buffer, EntityInfo *param_2, s32 colorNum) { - if (((gDungeon->blinded || - gDungeon->hallucinating) || + if (((gDungeon->unk181e8.blinded || + gDungeon->unk181e8.hallucinating) || (param_2->transformStatus.transformStatus == STATUS_INVISIBLE)) && (param_2->isNotTeamMember)) { @@ -101,8 +101,8 @@ void sub_8070968(u8 *buffer, EntityInfo *entityInfo, s32 colorNum) void sub_80709C8(u8 *buffer, EntityInfo *entityInfo) { - if (((gDungeon->blinded || - gDungeon->hallucinating) || + if (((gDungeon->unk181e8.blinded || + gDungeon->unk181e8.hallucinating) || (entityInfo->transformStatus.transformStatus == STATUS_INVISIBLE)) && (entityInfo->isNotTeamMember)) { diff --git a/src/trap.c b/src/trap.c index 355c8bf76..1ad86b3a5 100644 --- a/src/trap.c +++ b/src/trap.c @@ -271,7 +271,7 @@ void sub_807FE9C(Entity *pokemon, Position *pos, int param_3, char param_4) if (HasHeldItem(target, ITEM_TRAP_SCARF)) { text = *gUnknown_80FDB5C; } - if ((flag == TRUE) || (gDungeon->unk1820F != 0)) { + if ((flag == TRUE) || (gDungeon->unk181e8.unk1820F != 0)) { if (rand < 0) text = *gUnknown_80FDB7C; } else if (rand < 0xf) { @@ -291,7 +291,7 @@ void sub_807FE9C(Entity *pokemon, Position *pos, int param_3, char param_4) sub_80421C0(0,0x15c); sub_8049ED4(); sub_804225C(pokemon,pos,trapData->id); - if (gDungeon->blinded) { + if (gDungeon->unk181e8.blinded) { SendMessage(pokemon,*gUnknown_80FD7F4); } else { diff --git a/src/trap_1.c b/src/trap_1.c index 9b19966de..c56512f50 100644 --- a/src/trap_1.c +++ b/src/trap_1.c @@ -483,7 +483,7 @@ void sub_8081454(unkStruct_8094924 *param_1) for(iVar4 = 0; iVar4 < 8; iVar4++) { SavePosition(param_1,&gDungeon->unkE220[iVar4]); - } + } sub_80830F8(param_1,&gDungeon->unkE240); sub_80830F8(param_1,&gDungeon->unkE250); sub_808312C(param_1,&gDungeon->unkE260); @@ -503,17 +503,17 @@ void sub_808165C(unkStruct_8094924 *param_1) { sub_808300C(param_1,gUnknown_81071E0); - sub_8083060(param_1, gDungeon->unk18208); - sub_8083060(param_1, gDungeon->visibilityRange); - sub_80830B4(param_1, gDungeon->blinded); - sub_80830B4(param_1, gDungeon->unk1820B); - sub_80830B4(param_1, gDungeon->unk1820C); - sub_80830B4(param_1, gDungeon->unk1820D); - sub_80830B4(param_1, gDungeon->unk1820E); - sub_80830B4(param_1, gDungeon->unk1820F); - sub_80830B4(param_1, gDungeon->hallucinating); - sub_80830B4(param_1, gDungeon->unk18211); - sub_80830B4(param_1, gDungeon->unk18213); + sub_8083060(param_1, gDungeon->unk181e8.unk18208); + sub_8083060(param_1, gDungeon->unk181e8.visibilityRange); + sub_80830B4(param_1, gDungeon->unk181e8.blinded); + sub_80830B4(param_1, gDungeon->unk181e8.unk1820B); + sub_80830B4(param_1, gDungeon->unk181e8.unk1820C); + sub_80830B4(param_1, gDungeon->unk181e8.unk1820D); + sub_80830B4(param_1, gDungeon->unk181e8.unk1820E); + sub_80830B4(param_1, gDungeon->unk181e8.unk1820F); + sub_80830B4(param_1, gDungeon->unk181e8.hallucinating); + sub_80830B4(param_1, gDungeon->unk181e8.unk18211); + sub_80830B4(param_1, gDungeon->unk181e8.unk18213); } // NOTE: forcing this s16 for now - Seth